Подтвердить что ты не робот

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.

Что я делаю неправильно?

4b9b3361

Ответ 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