Java.lang.IllegalArgumentException: Недействительное имя класса: ANDROID NDK javah

Paul Asiimwe 08/22/2017. 6 answers, 9.039 views
android-ndk android-ndk jni adt

Я научился кодировать Android в NDK на WINDOWS Eclipse .... следил за учебником Sylvain Ratabouil. Итак, im в Run | Внешние инструменты | Конфигурации внешних инструментов ... создание новой конфигурации программы.

Name: MyProject javah

Местоположение: $ {env_var: JAVA_HOME} \ bin \ javah.exe

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

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

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

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

Когда я пытаюсь $ {workspace_loc: / MyProject / jni} com.myproject.MyActivity}

я получил

Exception in thread "main" java.lang.IllegalArgumentException: Not a valid class name: C:\Paul\Workspace\MyProject\jni 

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

1 Comments
Guilherme 08/31/2014
Забавно, это не сработало для меня. Я в маке. Это решило stackoverflow.com/questions/9200373/...

6 Answers


Paul Asiimwe 07/13/2013.

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

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

-d $ {workspace_loc: / MyProject / jni} -classpath C: \ Paul \ android-sdk-windows \ platform \ android-17 \ android.jar; $ {workspace_loc: / MyProject / bin / classes} com.myproject.MainActivity


Julian 07/22/2014.

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

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

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

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

Location:

$NO 

Working Directory:

$NO 

Arguments:

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

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


community wiki 12/20/2014.

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

  1. Как «Расположение» установил джаву из вашей системы
  2. Как «Рабочий каталог» задает каталог bin / classes проекта ( $NO )
  3. Поскольку «Аргумент» устанавливает папку jni в качестве выходного каталога и указывает класс, в котором вы хотите запустить javah ( -d «$ {workspace_loc: / HelloWorld / jni}» com.example.helloworld.MainActivity )

NB :: Не забывайте о двойном qoute (") вокруг вывода на третьем шаге ( "$NO )

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

Все 3 шага в одном изображении


Saket 06/29/2014.

Ну в случае ...

1-> Goto (cd C: \ Program Files \ Java \ jdk1.7.0_60 \ bin)

2-> C: \ Program Files \ Java \ jdk1.7.0_60 \ bin> javah -jni -classpath F: \ Android_OpenGLES \ FibonacciNative \ bin \ classes -d F: \ Android_OpenGLES \ FibonacciNative \ jni \ com.example.fibonaccinative. FibLib

Без создания / использования переменной окружения ...


CoDe 08/12/2015.

После успешной попытки

javah com.sense.kios.Calculation 

Note: Include package name.

В случае, если 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  

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


Dhiraj Himani 07/29/2017.

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

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

Related questions

Hot questions

Language

Popular Tags