ошибка javah: невозможно получить доступ к активности

Я пытался создать файл .h с помощью Javah для своего приложения Android NDK. Я использую cygwin, чтобы сделать то же самое для себя.

Зафиксировав рабочую область в папке bin моего текущего приложения, я выполнил эту команду: -

javah -classpath /cygdrive/c/Android/android-sdk/platforms/android.jar myNDK\bin\classes my.first.NDK.MyNDKActivity

Однако он постоянно дает следующую ошибку: -

error: cannot access myNDKbinclasses
class file for myNDKbinclasses not found
javadoc: error - Class myNDKbinclasses not found.
error: cannot access my.first.NDK.MyNDKActivity
class file for my.first.NDK.MyNDKActivity not found
javadoc: error - Class my.first.NDK.MyNDKActivity not found.
Error: No classes were specified on the command line.  Try -help.

Может ли кто-нибудь помочь мне в решении этой проблемы?

Я также пытался перейти в папку, содержащую файл java, и выполнить там javah, но все равно получал ту же ошибку: -

error: cannot access MyNDKActivity
class file for MyNDKActivity not found
javadoc: error - Class MyNDKActivity not found.
Error: No classes were specified on the command line.  Try -help.

Я думаю, это каким-то образом изображает проблему из-за какой-то проблемы с разрешением.


person Prashant Singh    schedule 06.10.2012    source источник
comment
Проверьте это stackoverflow.com/questions/10483959/   -  person Punith K    schedule 23.09.2014


Ответы (4)


Кажется, вам не хватает разделителя в вашем пути к классам:

javah -classpath /cygdrive/c/Android/android-sdk/platforms/android.jar:myNDK/bin/classes my.first.NDK.MyNDKActivity
person Reimeus    schedule 06.10.2012
comment
По-прежнему возникает та же ошибка: не удается получить доступ к файлу класса my.first.NDK.MyNDKActivity для my.first.NDK.MyNDKActivity, не найденного javadoc: ошибка — класс my.first.NDK.MyNDKActivity не найден. Ошибка: в командной строке не указаны классы. Попробуйте - помогите. - person Prashant Singh; 06.10.2012
comment
Это сообщение об ошибке предполагает, что ваш путь к классам неверен. Из текущего каталога выполните ls myNDK/bin/classes, вы видите свою папку my? - person Reimeus; 06.10.2012
comment
Я вижу «мою» папку, но это выводит меня за пределы папки моего проекта. Это нормально ? Я думаю, мне нужно оставаться в папке bin? - person Prashant Singh; 06.10.2012
comment
Спасибо за помощь (+1)! У меня была проблема с моим путем к классу - person Prashant Singh; 06.10.2012

Что делает android.jar в вашей строке?!

Кроме того, MyNDKActivity — это класс, который содержит собственные подписи?

Я использовал javah в этой форме (у меня работает):

javah -d output/ -classpath /home/bod/path/to/eclipse/workspace/project/classes com.myapp.NDKBridge

куда:

-d output/ — каталог для сбора сгенерированных заголовков.

-classpath /home/.../classes — папка с классами в вашем проекте

com.myapp.NDKBridge — имя класса, объявляющего собственные подписи.

person Sergey Vakulenko    schedule 06.10.2012
comment
Я совершенно новичок в этом NDK. Итак, где я должен выполнять эти команды, в какой папке? При изменении моей команды я получил ту же ошибку - person Prashant Singh; 06.10.2012
comment
Спасибо за помощь (+1)! У меня была проблема с моим путем к классу - person Prashant Singh; 06.10.2012

Наконец-то я решил свою проблему. Была проблема с classpath, который я использовал. Вот окончательное решение: -

  1. Где выполнить команду от $PROJECT_DIRECTORY/src

  2. Часть ant системы сборки Android фактически помещает файлы классов в bin/classes. Таким образом, путь к классам должен иметь вид $PROJECT_DIRECTORY/bin/classes

  3. javah -classpath ../bin/classes my.first.NDK.MyNDKActivity

person Prashant Singh    schedule 06.10.2012

возможно, это сработает! добавьте параметр [-bootclasspath] вашего пути к SDK.

javah -bootclasspath /home/lmdyyh/development/adt-bundle-linux-x86-20131030/sdk/platforms/android-19/android.jar -classpath bin/classes -d jni com.myndk.Myndk

person user2576114    schedule 13.01.2014