jni dans linux(Cent6): Exception in thread “main” java.lang.UnsatisfiedLinkError
Je travaille maintenant avec JNI.
J'ai fait les choses ci-dessous:
-
J'ai fait HelloJNI.java. Il a simplement bibliothèque de liens libhello.donc.
static { System.loadLibrary("hello"); }
comme ça. bien sûr, j'ai corps aussi, mais rien de spécial.
-
puis j'ai fait fichier de classe, C fichier et le fichier d'en-tête.
J'ai commandé#javac HelloJNI.java #javah -classpath /usr/guest/workspace/path/-jni package.HelloJNI no errors till now.
-
J'ai fait libhello.donc.
# gcc -shared -fpic -o libhello.so -I/usr/java/jdk1.7.0_21/include -I/usr/java/jdk1.7.0_21/include/linux HelloJNI.c
-
Lorsque j'exécute ce projet dans eclipse, message d'erreur s'affiche comme ci-dessous.
Exception in thread "main" java.lang.UnsatisfiedLinkError: no hello in java.library.path at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1860) at java.lang.Runtime.loadLibrary0(Runtime.java:845) at java.lang.System.loadLibrary(System.java:1084) at org.owls.jni.HelloJNI.<clinit>(HelloJNI.java:7)
J'ai essayé celui-ci, mais ne fonctionne pas.
# chcon -t texrel_shlib_t libhello.so
Merci pour votre lecture et votre sage solutions:D
- quelqu'un parler de CHEMIN de chose. mais je ne comprends pas où mettre cette ligne.
Vous devez vous connecter pour publier un commentaire.
export LD_LIBRARY_PATH="/path/to/library/"
. Vous pouvez le faire soit depuis la ligne de commande ou l'ajouter dans votre bashrcDe bons liens pour lire http://tldp.org/HOWTO/Program-Library-HOWTO/shared-libraries.html et jni.h et attend‘=’, ‘,’, ‘;’, ‘asm " ou "__attribute__ "avant " vide"
J'ai résolu ce problème par moi-même.
sa cause a été javah commande.
j'ai fait comme ci-dessous.
et de la méthode dans le fichier d'en-tête généré est différent à ce que j'attendais.
- Je m'attendre à quelque chose comme
mais ci-dessous est en fait générée.
c'est la principale raison de mon problème.
eventhough, j'ai moi-même, mais merci beaucoup pour quelqu'un qui partage mon problème.
avoir une bonne journée 😀