Ява.ленг.IllegalArgumentException: недопустимое имя класса: ANDROID NDK javah

Im учится кодировать Android в NDK на Windows Eclipse.... после учебник по Ratabouil Сильвен. So im in Run / внешние инструменты / конфигурации внешних инструментов… создание новой конфигурации программы.

имя: MyProject javah

местоположение: ${env_var: JAVA_HOME}binjavah.exe

рабочий каталог: ${workspace_loc:/MyProject/bin}

проблема возникает в аргументы... когда я пытаюсь ... Аргументы: - D ${workspace_loc:/MyProject/jni} com.мой проект.MyActivity как говорится в книге

Я получаю, когда я нажимаю run

Exception in thread "main" java.lang.IllegalArgumentException: Not a valid class name: –d

когда я пытаюсь ${workspace_loc:/MyProject / jni} com.мой проект.MyActivity}

Я

Exception in thread "main" java.lang.IllegalArgumentException: Not a valid class name: C:PaulWorkspaceMyProjectjni

обновление: я поставил-classpath первым, и он работает, но не может найти файл класса для com.мой проект

6 ответов


после дальнейших исследований.... я сделал это.

Я устанавливаю аргументы в

- D ${workspace_loc:/MyProject / jni} - путь к классам C:\Paul\android-sdk-windows\platforms\android-17\android - ... jar;${workspace_loc:/MyProject/bin / classes} com.мой проект.В MainActivity


Я также трачу некоторое время на эту проблему при работе с упомянутой книгой об Android NDK.

обратите внимание на следующее: Имя класса java не записывается в { }, просто напишите что-то вроде com.myproject.MyActivity

на -classpath параметр может принимать несколько путей, разделенных точкой с запятой.

в моем случае эти параметры работали:

расположение:

${env_var:JAVA_HOME}\bin\javah.exe

рабочая Каталог:

${workspace_loc:/myproject/bin}

Аргументы:

-d ${workspace_loc:/myproject/jni} -classpath ${workspace_loc:/myproject/bin/classes};"C:\Eclipse\sdk\platforms\android-18\android.jar" com.myproject.MyActivity

(кстати.: Правильный Adroid.файл jar ссылается внутри проекта Eclipse.)


Я также столкнулся с той же проблемой сегодня вечером, я нашел менее утомительный способ, как следовать...

  1. как "местоположение" установите javah из вашей системы
  2. как "рабочий каталог" установите каталог bin/classes проекта (${workspace_loc:/HelloWorld/bin / classes})
  3. как "аргумент" установите папку jni в качестве выходного каталога и укажите класс, на котором вы хотите запустить javah ( - d "${workspace_loc: / HelloWorld/jni}" com.образец.адский мир.В MainActivity)

NB :: не забудьте двойной qoute ( " ) вокруг вывода на третьем шаге ( " ${workspace_loc:/HelloWorld / jni}")

полная картина также прилагается после

All 3 steps in a single picture


ну на всякий случай ...

1-> Перейти ( компакт-диск C:\Program файлы\папку Java\jdk1.7.\0_60 ОГРН)

2 - > C:\Program файлы\Java\jdk1.7.0_60\bin>путь к классам javah-jni F:\Android_OpenGLES\FibonacciNative\bin\classes - d F:\Android_OpenGLES\FibonacciNative\jni \ com.образец.fibonaccinative.FibLib

без создания/использования переменных среды ...


после того, как я попытался успешно

javah com.sense.kios.Calculation

Примечание: включите имя пакета.

в случае, если javah не найден как команда, и вы получаете

The program 'javah' can be found in the following packages:
 * gcj-4.6-jdk
 * gcj-4.7-jdk
 * openjdk-7-jdk
 * openjdk-6-jdk
Try: sudo apt-get install <selected package>

используйте прямой путь пути jdk, в моем случае это /usr/lib/jvm/jdk1.8.0/bin/javah.


ДА, ЭТО ПРАВИЛЬНО более абстрактным было бы

-d ${workspace_loc:/MyProject/jni} -classpath ${env_var:ANDROID_SDK_HOME}\platforms\android-16\android.jar;${workspace_loc:/MyProject/bin/classes} com.myproject.MyActivity