90 votes

comment faire pour que jni.h soit trouvé ?

Dans Ubuntu 12.04, j'ai installé jdk7 de sun/oracle. Quand locate jni.h il imprime plusieurs endroits

/usr/lib/jvm/java-6-openjdk-amd64/include/jni.h
/usr/lib/jvm/jdk1.7.0_07/include/jni.h
...

Dans le fichier d'en-tête généré par le JDK, il y a include <jni.h> et il se plaint actuellement

fatal error: jni.h: No such file or directory.

Dans mon Makefile il n'y a pas de spécification des lieux où les jni.h est. Et je demande s'il est possible de configurer certains paramètres du système pour que le chemin d'accès de jni.h (dire, /usr/lib/jvm/jdk1.7.0_07/include/jni.h ) à connaître lors de la compilation.

52voto

jdb Points 2452

Vous devez indiquer à votre compilateur où se trouve le répertoire d'inclusion. Quelque chose comme ceci :

gcc -I/usr/lib/jvm/jdk1.7.0_07/include

Mais cela dépend de votre fichier makefile.

33voto

yogesh singh Points 555

Il faut à la fois jni.h y jni_md.h fichiers, Essayez ceci

gcc -I/usr/lib/jvm/jdk1.7.0_07/include \
  -I/usr/lib/jvm/jdk1.7.0_07/include/linux filename.c

Cela comprendra les fichiers JNI généraux et ceux qui sont nécessaires pour linux.

17voto

hgaronfolo Points 323

L'installation du kit de développement OpenJDK (JDK) devrait résoudre votre problème.

sudo apt-get install openjdk-X-jdk

Cela devrait vous permettre de compiler sans problème.

12voto

Leo Ufimtsev Points 43

Je définis habituellement ma variable JAVA_HOME comme suit :

export JAVA_HOME=/usr/lib/jvm/java/

Il contient les fichiers d'inclusion nécessaires. J'ajoute parfois le fichier ci-dessous à mon .barshrc lorsque je compile beaucoup de choses qui en ont besoin.

9voto

user2925073 Points 81

Utilisez le code suivant :

make -I/usr/lib/jvm/jdk*/include

où jdk* est le nom du répertoire de votre installation jdk (par exemple jdk1.7.0).

Il n'y aurait pas de solution à l'échelle du système puisque le nom du répertoire serait différent selon les versions du JDK téléchargées et installées. Si vous souhaitez une solution automatisée, veuillez inclure toutes les commandes dans un seul script et exécuter ledit script dans Terminal.

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