Android – javah не находит мой класс

У меня возникают проблемы с созданием файла заголовка C для JNI с использованием javah .

Вот сценарий, который я использую, находясь в каталоге <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 .

Что я делаю не так?

Вы указываете путь к классу, содержащий только android.jar .

Вам также необходимо указать местоположение, в котором хранятся ваши классы. В вашем случае это текущий каталог, поэтому вам нужно использовать . (В Windows). Вызов должен выглядеть так:

 javah -classpath C:\PROGRA~2\Android\android-sdk\platforms\android-8\android.jar;. com.test.JniTest 

Если вы используете Linux или MAC-ОС, используйте ":" для разделения каталогов для classpath а не ";" Символ: Пример:

 javah -cp /Users/Android/android-sdk/platforms/android-xy/android.jar:. com.test.JniTest 

Вы должны изменить каталог на <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