Android - Джава не находит мой класс - PullRequest
12 голосов
/ 03 октября 2011

У меня проблемы с генерацией файла заголовка 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.

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

Ответы [ 3 ]

18 голосов
/ 21 сентября 2013

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

javah -cp /Users/Android/android-sdk/platforms/android-xy/android.jar:. com.test.JniTest
18 голосов
/ 03 октября 2011

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

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

javah -classpath C:\PROGRA~2\Android\android-sdk\platforms\android-8\android.jar;. com.test.JniTest
10 голосов
/ 21 сентября 2012

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

...