43 votes

Erreur Javah lors de son utilisation dans JNI

Commander:

 javah -jni JavaHowTo
 

Résultat:

 error: cannot access JavaHowTo 
class file for JavaHowTo not found

javadoc: error - Class JavaHowTo not found.
Error: No classes were specified on the command line.  Try -help.
 

J'ai défini le chemin de classe correctement, mais j'obtiens toujours cette erreur javah .

Toute solution à ce problème sera très utile.

81voto

Glen Points 13521

Essayer

 javah -jni com.example.JavaHowTo
 

com.example est votre paquet.

Vous devez également exécuter javah à partir du répertoire contenant com/example/JavaHowTo.class

par exemple si votre structure est

 /home/user/com/example/JavaHotTo.class
 

courir javah de

 /home/user
 

13voto

jankos Points 165

Ce qui suit a fonctionné pour moi (Win7):

 javah -classpath bin/classes -jni -d jni com.my.javaclass
 

Je lance ceci depuis le répertoire principal de l'application.

Le problème était dans les classes de sous-répertoires

11voto

dilig0 Points 489

J'utilise avec succès javah tous les jours à partir de mes scripts de construction avec les options suivantes:

javah -d <outputdir> -classpath <classpath> <fully_qualified_class>

où:

'outputdir' is the directory where to put the generated header file

'classpath' contains an absolute path to the directory containing your root package (as mentionned by Glen)

'fully_qualified_class' is the name of the class containing native methods without .class extension

L'option -jni n'est pas obligatoire (définie par défaut)

Quoi qu'il en soit, vous devriez vérifier que votre fichier de classe a bien été généré: vous êtes très surpris d'avoir une erreur javadoc aussi ...

9voto

J'ai rencontré la même erreur et en utilisant le lien http://www.inonit.com/cygwin/jni/helloWorld/header.html , j'ai réussi à générer le fichier .h. J'ai utilisé la commande suivante

 C:\Program Files\Java\jdk1.6.0_21\bin>javah -d C:\Prachi\Android\Workspace_QP_re
structure\HelloWorld\bin\example\jni -classpath C:\Prachi\Android\Workspace_QP_r
estructure\HelloWorld\bin example.jni.HelloWorld
 

ici example.jni est le nom de mon paquet et C:\Prachi\Android\Workspace_QP_re structure\ est le chemin de mon espace de travail eclipse.

J'espère que cela vous aide

4voto

Kondzio Points 914

J'ai eu ce problème lorsque j'ai ajouté à -classpath mon répertoire source . Je pensais que les classes sont dans des fichiers * .java;)

Javah travaille sur du code octet, vous devez donc ajouter un répertoire avec vos fichiers binaires à classpath

J'ai fait une tâche d'éclipse:

"Emplacement"

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

"Arguments"

 -verbose 
-force
-classpath ;${project_loc}\bin
-d ${project_loc}\jni 
${java_type_name}
 

Sélectionner le fichier et exécuter

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X