Android - javah не находит мой класс
У меня возникают проблемы, генерирующие заголовочный файл C для JNI, используя javah
.
Здесь script я использую, находясь в каталоге <project-dir>\bin
:
javah -classpath C:\PROGRA~2\Android\android-sdk\platforms\android-8\android.jar com.test.JniTest
В качестве возврата я получаю:
ERROR: Could not find class file for 'com.test.JniTest'.
Даже если класс JniTest
определенно находится в \com\test
.
Что я делаю неправильно?
Ответы
Ответ 1
Вы указываете путь к классу, содержащий только android.jar
.
Вам также необходимо указать место хранения ваших классов. В вашем случае это текущий каталог, поэтому вам нужно использовать .
(разделенный ;
в Windows). Вызов должен выглядеть следующим образом:
javah -classpath C:\PROGRA~2\Android\android-sdk\platforms\android-8\android.jar;. com.test.JniTest
Ответ 2
Если вы используете Linux или MAC-ОС, используйте ":"
для разделения каталогов для символа classpath
, а не ";"
: Пример:
javah -cp /Users/Android/android-sdk/platforms/android-xy/android.jar:. com.test.JniTest
Ответ 3
Вы должны изменить каталог на <project-dir>\bin\classes
; затем выполните следующую команду:
javah -classpath C:\PROGRA~2\Android\android-sdk\platforms\android-8\android.jar;. com.test.JniTest
Я использую следующий командный файл для создания заголовков:
jHdr.cmd
на рабочем столе:
@echo on
SET PLATFORM=android-8
SET ANDROID_SDK_ROOT=C:\Android\android-sdk
SET PRJ_DIR=D:\Workspaces\sqLite\raSQLite
SET CLASS_PKG_PREFIX=ra.sqlite
cd %PRJ_DIR%\bin\classes
javah -classpath %ANDROID_SDK_ROOT%\platforms\%PLATFORM%\android.jar;. %CLASS_PKG_PREFIX%.%~n1
pause
корректируйте переменные в соответствии с вашими потребностями...
поместите этот файл на рабочий стол, затем перетащите файл .java с eclise на jHdr.cmd
, результат находится в папке% PRJ_DIR%\bin\classes