Используйте javah для создания заголовочного файла

Я пытаюсь создать файл заголовка для собственного использования (c/С++) из файла Java с помощью eclipse. из командной строки я могу получить доступ к javah только тогда, когда я нахожусь в этом месте:

C:\Program Files (x86)\Java\jdk1.7.0_51\bin>

но я не могу ссылаться на свой класс Java так:

C:\Program Files (x86)\Java\jdk1.7.0_51\bin>javah -jni com.or.jnihelloworld.nativeclass

потому что класс находится за пределами этой папки по адресу:

C:\Users\Or Azran\workspace\JniHelloWorld\src\NativeLib.java

и я хочу сделать этот файл в папке jni в:

C:\Users\Or Azran\workspace\JniHelloWorld\jni

как я могу сделать это из командной строки? хороший toturial будет также большим


person or azran    schedule 20.03.2014    source источник


Ответы (2)


Кажется, здесь нужно решить несколько проблем.

Первый. Я не уверен, что ваш исходный код настроен правильно. Если ваш класс действительно com.or.jnihelloworld.nativeclass, то он должен находиться в каталоге: C:\Users\Or Azran\workspace\JniHelloWorld\src\com\or\jnihelloworld\nativeclass.java

Однако, если предположить, что класс/каталог правильный. Команда javah использует -d для указания выходного каталога, и вы можете указать путь с помощью -classpath, поэтому

javah -classpath "C:\Users\Or Azran\workspace\JniHelloWorld\src\" \ 
-d "C:\Users\Or Azran\workspace\JniHelloWorld\jni" com.or.jnihelloworld.nativeclass

следует поместить файл туда, куда вы хотите.

person AllenKll    schedule 20.03.2014
comment
он не работает с вашим примером следующим образом: javah -classpath c:\Users\Or Azran\ workspace\JniHelloWorld\src\ \ -d c:\Users\Or Azran\workspace\JniHelloWorld\jn i com.or.jnihelloworld.jnilib. Джава - person or azran; 21.03.2014
comment
Что ж, дополнительная косая черта перед -d указывает, что это должна быть одна строка, я разбил ее на две для удобства чтения. - person AllenKll; 21.03.2014
comment
когда я вызываю это: javah -classpath C:\Users\Or\workspace\NativeCodeTest\src\com\infinityar\nativecodetest\ -d C:\Users\Or\workspace\NativeCodeTest\jni com.infinityar.nativecodetest.NativeLib i получить ОШИБКУ: классы не указаны - person or azran; 23.03.2014
comment
Вы сначала скомпилировали свой java-файл? - person AllenKll; 24.03.2014
comment
он делает автоматическую сборку, так что я думаю, что делаю - person or azran; 24.03.2014
comment
В этом случае путь к классу должен будет найти файл .class. - person AllenKll; 24.03.2014

Ваш PATH не включает каталог bin JDK.

person user207421    schedule 20.03.2014
comment
Err, исправьте свой PATH, чтобы он работал? - person user207421; 24.03.2014