web-dev-qa-db-fra.com

jni.h: Aucun fichier ou répertoire de ce type

J'ai suivi ce tutoriel , et à l'étape 5, GCC obtient le résultat suivant:

    HelloWorld.c:1:17: error: jni.h: No such file or directory
    In file included from HelloWorld.c:3:
    HelloWorld.h:15: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘void’
    HelloWorld.c:5: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘void’

Je sais que les répertoires d’inclusion varient d’un système à l’autre; j’ai donc essayé d’adapter la commande en conséquence, mais je ne semble pas pouvoir trouver le bon répertoire sur mon système. J'utilise Ubuntu 10.04LTS.

28
Jack H

Ouvrez un terminal et tapez:

locate jni.h

Cela devrait vous dire où se trouve chaque fichier appelé jni.h sur votre système. Je suis sur Ubuntu 11.04, et il se trouve à:

/usr/lib/jvm/Java-6-openjdk/include/jni.h
/usr/lib/jvm/Java-6-Sun-1.6.0.26/include/jni.h

Vous devrez peut-être aussi l'obtenir auprès du dépôt:

Sudo apt-get install openjdk-6-jdk 

devrait faire l'affaire si vous ne l'avez pas installé.

27
Leif Andersen

jni.h habite avec JDK. Pour moi c'est: jdk1.6.0_25/include/.

Et par défaut, je ne pense pas que Ubuntu aurait JDK avec des bibliothèques de développement, alors téléchargez la dernière version du JDK depuis Oracle et installez-le quelque part.

Ou vous pouvez installer openjdk comme @Leif le suggère si cela fonctionne avec 10.04 LTS. Personnellement, je préfère celui de Sun/Oracle.

5
Alex Gitelman

Dans Ubuntu 14.04, exécutez:

Sudo apt-get install openjdk-7-jdk openjdk-7-jre-lib

Maintenant, vous avez un en-tête dans/usr/lib/jvm/Java-7-openjdk-AMD64/include

Pour OpenJDK 6:

Sudo apt-get install openjdk-6-jdk openjdk-6-jre-lib
2
Max Vyaznikov