java.lang.IllegalArgumentException: geen geldige klassenaam: ANDROID NDK javah

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

Ik heb geleerd Android te coderen in NDK op WINDOWS Eclipse .... een zelfstudieboek van Sylvain Ratabouil gevolgd. Dus ik ben in Run | Externe hulpmiddelen | Configuraties van externe tools ... een nieuwe programmaconfiguratie maken.

Name: MyProject javah

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

Werkmap: $ {workspace_loc: / MyProject / bin}

Het probleem komt in argumenten ... wanneer ik Argumenten probeer: -d $ {workspace_loc: / MyProject / jni} com.myproject.MyActivity zoals het zegt in het boek

ik krijg wanneer ik klik loop

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

wanneer ik $ {workspace_loc: / MyProject / jni} com.myproject.MyActivity} probeer

ik krijg

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

UPDATE: ik zet -klassepad eerst en het draait, maar kan het klassenbestand niet vinden voor com.myproject

1 Comments
Guilherme 08/31/2014
Grappig, dit werkte niet voor mij. Ik ben in Mac. Dit lost stackoverflow.com/questions/9200373/... op

6 Answers


Paul Asiimwe 07/13/2013.

na verder onderzoek .... ik deed het.

ik stel argumenten in

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


Julian 07/22/2014.

Ik heb ook wat tijd besteed aan dit probleem bij het werken met het genoemde boek over Android NDK.

Let op het volgende: De java classname is NIET geschreven in { } , schrijf gewoon iets als com.myproject.MyActivity

De parameter -classpath kan verschillende paden ontvangen, -classpath door puntkomma's.

In mijn geval werkten deze parameters:

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 .: het juiste Adroid.jar-bestand wordt vermeld in het Eclipse-project.)


community wiki 12/20/2014.

Mij ​​ook geconfronteerd met hetzelfde probleem vanavond, vond ik een minder vervelend manier als volgende ...

  1. als "Locatie" zet je de javah uit je systeem
  2. als "Werkmap" stelt de bin / classes-map van het project in ( $NO )
  3. stel als "Argument" de jni-map in als de uitvoerdirectory en wijs de klas aan waarop u de javah wilt uitvoeren ( -d "$ {workspace_loc: / HelloWorld / jni}" com.example.helloworld.MainActivity )

NB: Vergeet niet de dubbele qoute (") rond de uitvoer in de derde stap ( "$NO )

Een volledige afbeelding is ook als volgt bijgevoegd

Alle 3 stappen in een enkele foto


Saket 06/29/2014.

goed in het geval ...

1-> Ga naar (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

zonder omgevingsvariabele te maken / gebruiken ...


CoDe 08/12/2015.

Ik heb het met succes geprobeerd

javah com.sense.kios.Calculation 

Note: Include package name.

In het geval als javah niet wordt gevonden als een bevel en u krijgt

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  

gebruik direct pad van jdk pad, in mijn geval is het /usr/lib/jvm/jdk1.8.0/bin/javah .


Dhiraj Himani 07/29/2017.

JA DAT IS JUIST, meer abstract zou zijn

-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