Javah d'erreur lors de l'utilisation de JNI
Commande:
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 mis le chemin de classe correctement, mais j'ai toujours l'obtention de ce javah
erreur.
Ce sera bien utile.
Vous devez vous connecter pour publier un commentaire.
Essayer
où
com.example
est votre colis.Vous devez également exécuter javah à partir du répertoire contenant
com/example/JavaHowTo.class
par exemple, si votre structure est
exécuter javah de
La suite travaillé pour moi (Win7):
Je l'exécuter à partir de l'application répertoire principal.
Le problème était dans le sous-répertoire classes
J'ai réussi à utiliser javah tous les jours de mes scripts de compilation 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
-jni option n'est pas requis (définir par défaut)
De toute façon, vous devriez vérifier votre fichier de classe a été générée: assez surpris que vous obtenez une javadoc erreur de trop...
J'ai rencontré la même erreur et à l'aide de http://www.inonit.com/cygwin/jni/helloWorld/header.html lien que j'ai été en mesure de réussir à générer l' .h fichier. J'ai utilisé la commande suivante
ici exemple.jni est mon nom de package et
C:\Prachi\Android\Workspace_QP_re
est où mon workspace eclipse chemin.structure\
Espère que cela vous aide
J'ai eu ce problème quand j'ai ajouter à mon classpath source répertoire. Je pensais que les classes sont en *.fichiers java 😉
Javah est de travailler sur l'octet de code de sorte que vous avez à ajouter un répertoire avec vos binaires classpath
J'ai fait quelques eclipse tâche:
"Emplacement"
"Arguments"
Sélectionnez fichier et de l'Exécuter
Dans mon cas, le problème a été assez stupide..
J'ai essayer:
javah com.aaa.bbb.ClassName.classe
sans ".catégorie" je générer le .h fichier correctement
javah com.aaa.bbb.ClassName
Je suis à l'aide d'Eclipse.
Syntaxe de commande:
outputdir
- Le répertoire où le fichier d'en-tête est généré.classpath
- Contient un chemin d'accès absolu vers le répertoire contenant le package racine.fully_qualified_class
- Le nom de la classe contenant des méthodes indigènes SANS.class
extensionLe fichier suivant est généré:
Le contenu de l'en-tête généré fichier:
J'ai eu des problèmes similaires et utilisé l'option-verbose. J'ai dû ajouter une ; à l'avant de la classpath option.
Sans l' ;, c'est la fin du chemin de recherche:
c:\jdk\jre\classes\c:\projets\HellowWorld\build\classes
J'ai pu en arriver là parce que des exemples ci-dessus.
Pour Windows...
LES DÉTAILS D'UN FICHIER
La javaFileLocation doit être considérée comme étant constituée de deux parties...
CRÉER FICHIER DE CLASSE
La deuxième ligne ci-dessous a été exécuté à partir de l'Invite de Commande Windows.
Cela a créé l'HelloWorld.class fichier
CRÉER FICHIER D'EN-TÊTE
La deuxième ligne ci-dessous a été exécuté à partir de l'Invite de Commande Windows.
Cela a créé le HelloWorld.h fichier
question sur Cygwin:
javah
ne fonctionne pas correctement à partir de Cygwin terminal:Mais il fonctionne parfaitement en utilisant l'option
-classpath .
Plus de trucs:
-jni
est, par défaut, donc il n'est pas besoin.classpath
javah
sur MS-Windows préfère chemin à laC:\Workspace\prj\bin
cygpath -w /cygdrive/c/Workspace/prj/bin
convertir en MS-Windows format-d your/jni/headers/path
à écrire les en-têtes dans un autre répertoirejavah
crée le cheminyour/jni/headers/path
si elle n'existe pas (voir ci-dessous)Il a travaillé avec moi:
Pour la fenêtre:
Si le chemin d'accès du fichier .catégorie: D:\workspace\JNI Demo\build\classes\jni\demo
et dans Netbeans hava package: jni.demo.HelloWorld.java
Tout d'abord, je buijd fichier .java dans le fichier .classe.
Chemin d'accès du fichier .catégorie: D:\workspace\JNI Demo\build\classes\jni\demo\HelloWorld.class
Deuxièmement, je dir D:\workspace\JNI Demo\build\classes
Et javah -jni jni.la démo.HelloWorld
Enfin, le Fichier de résultat .j créé en chemin: D:\workspace\JNI Demo\build\classes
Allez dans votre répertoire "bin" de votre projet Java via le cmd de Windows en ligne de commande.
Puis,
La suite travaillé pour moi...
Aller cheminement d'un projet de terminal comme,
/home/usr/Bureau/espace de travail/Nom_projet/src/main/java
et de frapper la commande suivante,
javah -jni com.abc.test.callfileName (Sans .extension de classe)
com_abc_test_className.h fichier sera créé dans le chemin d'accès suivant /home/usr/Bureau/espace de travail/Nom_projet/src/main/java
enfin la commande ressemble,
[ma-machine/usr] $ /home/usr/Bureau/espace de travail/Nom_projet/src/main/java/src/main/java>javah -jni com.abc.test.className
Voir http://kn-gloryo.github.io/Build_NDK_AndroidStudio_detail/ d'une meilleure façon.
Si vous avez beaucoup de noms de fichiers (de classes java) vous pouvez utiliser un fichier avec une liste de cours.
Si vous êtes sous Linux ou MAC OS, utilisez ":" (deux-points) pour séparer les répertoires du classpath plutôt que ";"
Voir la référence http://docs.oracle.com/javase/1.5.0/docs/tooldocs/windows/javah.html