JNA prise en charge native (/com/sun/jna/linux-arm/libjnidispatch.donc) ne se trouvent pas dans le chemin d'accès aux ressources
J'ai commencé à construire un service java, qui intègre à la JNA de charger un natif C/C++ lib et je veux exécuter le service java sur le Raspberry PI aka plate-forme arm. J'ai réussi à construire un terrain stable du service et il fonctionne aussi bien sur windows 7 et linux amd64/debian mais.. sur le RPI plate-forme-je obtenir indiquées ci-dessus d'erreur:
Exception in thread "main" java.lang.UnsatisfiedLinkError: JNA prise en charge native (/com/sun/jna/linux-arm/libjnidispatch.donc) ne se trouvent pas dans le chemin d'accès aux ressources
Sur le RPI, j'ai effectué les opérations suivantes:
* Installé à la fois openjdk7 et java8 bêta avec un bras en dur flotteur de soutien.
* Installé libjna-java lib.
Suivantes sont définies:
Java
root@pisces:/opt/TellstickReplay# java -version
java version "1.8.0-ea"
Java(TM) SE Runtime Environment (build 1.8.0-ea-b36e)
Java HotSpot(TM) Client VM (build 25.0-b04, mixed mode)
root@pisces:/opt/TellstickReplay#
LD_LIBRARY_PATH
root@pisces:/opt/TellstickReplay# echo $LD_LIBRARY_PATH
/opt/lib/jna
CLASSPATH
root@pisces:/opt/TellstickReplay# echo $CLASSPATH
/usr/lib/jna
Aucun des paramètres semble répondre à JAVA avec JNA soutien. J'ai même essayé de l'exporter jna.jar et linux-arm.jar dans le projet dans Eclipse et tous ensemble, reconstruire les bocaux dans la exporté jar toujours obtenir la même erreur. Le exporté pot a été testé avec succès sur windows et linux si le fichier jar est de travail.
J'ai aussi essayé d'utiliser le CLASSPATH dans le Manifeste dans le fichier jar, mais sans succès. J'ai également essayé de charger explicitement la libjnidispatch.donc, à partir du chemin d'accès absolu mais JAVA puis commence à se plaindre qu'il ne peut pas trouver le fichier à libjnidispatch.alors même que le chemin d'accès est correct à 100%.
Donc.. personne ne sait COMMENT obtenez correctement JNA appui sur le Raspberry PI plate-forme de travail?? S'il vous plaît, je suis extrêmement frustré et bientôt abandonner l'espoir de résoudre ce..
OriginalL'auteur Pär Fransman | 2013-01-31
Vous devez vous connecter pour publier un commentaire.
Je suis re-compilation Apache Spark pour RPI2 et j'ai passé une couple de jours pour résoudre le problème. Puis j'ai trouvé la meilleure solution possible. Tous vous avez besoin est un libjnidispatch.donc, le lien dans votre JVM par défaut natif lib chemin.
OriginalL'auteur stkim1
Où est libjnidispatch.si sur votre système? Si ce n'est pas sur votre système, JNA va tenter de le décompresser à partir de jna.jar à partir de l'indication du chemin d'accès aux ressources. Si elle n'est pas là non plus, vous aurez la
UnsatisfiedLinkError
.Il est recommandé de les installer de façon explicite libjnidispatch.si sur votre système lorsque cela est possible; la jna.jar le groupement est principalement là pour faciliter l'utilisation la plus commune de plates-formes de bureau.
linux-arm.jar
contient la plus récente génération de libjnidispatch.oui, mais seulement WebStart sait comment charger automatiquement le natif à partir d'un pot comme ça. Si vous le décompresser dans /opt/lib/jna (ou ailleurs sur LD_LIBRARY_PATH), vous devez éviter l'erreur de lien.Le message d'erreur indique que la JNA a essayé de le décompresser à partir de jna.jar après avoir vainement de chargement via
System.loadLibrary()
. Vous pouvez configurer le système de la propriétéjna.boot.library.path
à /usr/libs/jna, mais vous ne devriez pas avoir à s'LD_LIBRARY_PATH comprend déjà que le chemin d'accès (à noter que dans votre question, vous l'avez configuré pour /*/opt / lib*/jna, qui se traduira par une erreur si la bibliothèque est en fait dans /*/usr / libs*/jna).Vous mentionnez Système.loadLibrary() mais j'ai lu sur JNA à l'aide de Maternelle.loadLibrary (), mais la recherche par le biais de la " jna " je ne peux pas trouver de Système.loadLibrary(). Est-il une différence significative entre ces deux??
Aussi est-il Raspbian de l'image qui ont JNA de travail hors de la boîte? J'ai été la recherche d'une solution pour ça depuis si longtemps je ne peux pas vraiment motiver à trouver la source de cette.
J'ai trouvé le problème. JNA.jar il manquait
libjnidispatch.so
à l'intérieur de lajna.jar
je viens donc de construirejna.jar with Ant
sur le Raspberry Pi avec openjdk6 et qui a résolu le problème. Étrange, bien que le lien avec-Djna.boot.librar.path=/path/to/libjnidispatch.so
encore obtenu lesUnsatisfiedLinkError
. Eh bien, il fonctionne maintenant =) Merci beaucoup pour votre patiance et d'entrée!!OriginalL'auteur technomage
J'ai emballé le nouveau jna.jar (4.0) et il comprend la linux-arm/libjnidispatch.. Le code que j'essayais de courir fonctionne maintenant.
OriginalL'auteur Eivind
Je dirais que son plus de "problème de configuration de l'emplacement de la "libjnidispatch.ainsi," dans le système d'exploitation à l'aide de votre particulier JRE systèmes internes de dossier/package/JNDI-structure, il est peut-être pas de manière identique aménagé Debian ou Java JRE.
OriginalL'auteur nicephotog