java.lang.IllegalArgumentException: Kein gültiger Klassenname: ANDROID NDK javah

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

Ich habe gelernt, Android in NDK auf WINDOWS Eclipse zu kodieren .... habe ein Tutorial-Buch von Sylvain Ratabouil gelesen. Also ich bin in Run | Externe Werkzeuge | Externe Tools Konfigurationen ... Erstellen einer neuen Programmkonfiguration.

Name: MyProject javah

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

Arbeitsverzeichnis: $ {workspace_loc: / MeinProjekt / bin}

Das Problem kommt in Argumenten ... wenn ich versuche Argumente: -d $ {workspace_loc: / MyProject / jni} com.myproject.MyActivity wie es im Buch sagt

Ich bekomme, wenn ich auf run klicke

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

wenn ich versuche, $ {workspace_loc: / MyProject / jni} com.myproject.MyActivity}

Ich bekomme

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

UPDATE: Ich lege zuerst -classpath und es läuft, aber kann die Klassendatei für com.myproject nicht finden

1 Comments
Guilherme 08/31/2014
Komisch, das hat nicht für mich funktioniert. Ich bin in Mac. Dieser löste stackoverflow.com/questions/9200373/...

6 Answers


Paul Asiimwe 07/13/2013.

nach weiteren Recherchen .... ich habe es getan.

Ich setze Argumente auf

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


Julian 07/22/2014.

Ich verbringe auch viel Zeit mit diesem Problem, wenn ich mit dem erwähnten Buch über Android NDK arbeite.

Bitte beachten Sie Folgendes: Der Java-Klassenname wird NICHT in { } , schreiben Sie einfach etwas wie com.myproject.MyActivity

Der Parameter -classpath kann mehrere Pfade erhalten, die durch Semikolon unterteilt sind.

In meinem Fall funktionierte dieser Parameter:

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 .: Die korrekte Adroid.jar-Datei wird im Eclipse-Projekt referenziert.)


community wiki 12/20/2014.

Da ich heute Abend das selbe Problem habe, fand ich eine weniger langweilige Art wie folgt ...

  1. als "Location" setze die javah von deinem System
  2. als "Arbeitsverzeichnis" legen Sie das Verzeichnis bin / classes des Projekts fest ( $NO )
  3. als "Argument" setze den jni-Ordner als Ausgabeverzeichnis und weise auf die Klasse hin, auf der du den javah ausführen willst ( -d "$ {workspace_loc: / HelloWorld / jni}" com.example.helloworld.MainActivity )

NB :: Vergessen Sie nicht das doppelte Qoute (") um die Ausgabe im dritten Schritt ( "$NO )

Ein vollständiges Bild ist ebenfalls beigefügt

Alle 3 Schritte in einem einzigen Bild


Saket 06/29/2014.

gut für den Fall ...

1-> Gehe zu (CD C: \ Programme \ Java \ jdk1.7.0_60 \ bin)

2-> C: \ Programme \ 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

ohne Umgebungsvariable zu erstellen / zu verwenden ...


CoDe 08/12/2015.

Folgendes habe ich erfolgreich versucht

javah com.sense.kios.Calculation 

Note: Include package name.

Falls javah nicht als Befehl gefunden wird und Sie bekommen

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  

verwende direkten Pfad von jdk Pfad, in meinem Fall ist es /usr/lib/jvm/jdk1.8.0/bin/javah .


Dhiraj Himani 07/29/2017.

Ja, das ist richtig abstrakter würde sein

-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