Chargement de Linux .donc Fichier à Java Runtime
Je suis en train de charger un linux .si le fichier au moment de l'exécution en Java, mais j'obtiens un UnsatisfiedLinkError. Je suis de passage dans l'-Djava.de la bibliothèque.path=/Users/tom/base/jni/dist VM argument lors de l'exécution de la ci-dessous java principal de mon Test.class. Le libSample.si le fichier est dans le dossier /Utilisateurs/tom/base/jni/répertoire dist. Des idées? Merci!
public class Test {
public static void main(String[] args) {
System.out.println(System.getProperty("java.library.path"));
//prints /Users/tom/codebase/jni/dist
System.loadLibrary("Sample");
}
}
VM Argument:
-Djava.library.path=/Users/tom/codebase/jni/dist
Exception:
Exception in thread "main" java.lang.UnsatisfiedLinkError: no Sample in java.library.path
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1758)
at java.lang.Runtime.loadLibrary0(Runtime.java:823)
at java.lang.System.loadLibrary(System.java:1045)
at Test.main(Test.java:9)
J'ai aussi essayé d'utiliser d'essayer l'approche directe (à l'aide du Système.de charge) et a obtenu le ci-dessous les résultats si elles contribuent à l'Exception in thread "main" java.lang.UnsatisfiedLinkError: /Users/tom/base/jni/dist/libSample.donc: aucune image trouvé. A trouver: /Users/tom/base/jni/dist/libCiscoEnergyWiseJni.donc: inconnu type de fichier, les huit premiers octets: 0x7F 0x45 0x4C 0x46 0x01 0x01 0x01 0x00
(si oui, vous devez ajouter :/le/dossier/où/son/installé à la fin de java.de la bibliothèque.chemin d'accès)
non désolé, c'était une faute de frappe...fixe maintenant
Je suis confronté au même problème exactement. Avez-vous été en mesure de trouver une solution?
voir la réponse cochée ci-dessous...
OriginalL'auteur c12 | 2011-11-08
Vous devez vous connecter pour publier un commentaire.
Bibliothèques sur Linux sont souvent nommé dans le modèle
libXXX.so
, et je crois que Java suit celle de la convention. DoncSystem.loadLibrary("Sample")
peuvent être à la recherche pourlibSample.so
. Vous pouvez le vérifier en faisant un rapide test de programme à appelerSystem.mapLibraryName
et de la vérification de la sortie.Pour résoudre le problème, en supposant que cela est en fait le problème que vous rencontrez, vous pouvez renommer votre fichier de bibliothèque ou de l'utilisation
System.load
(pasSystem.loadLibrary
), ce qui vous permettra de charger la bibliothèque spécifié par le nom exact de passer, sans transformation. Cette dernière méthode n'est pas portable sur l'ensemble des plates-formes, bien que.J'ai essayé de l'approche directe (à l'aide du Système.de charge) et a obtenu le ci-dessous les résultats si elles contribuent à l'Exception in thread "main" java.lang.UnsatisfiedLinkError: /Users/tom/base/jni/dist/libSample.donc: aucune image trouvé. A trouver: /Users/tom/base/jni/dist/libCiscoEnergyWiseJni.donc: inconnu type de fichier, les huit premiers octets: 0x7F 0x45 0x4C 0x46 0x01 0x01 0x01 0x00
Je suggère de modifier ces informations dans la question pour d'autres answerers.
OriginalL'auteur David Z
Essayez d'utiliser
OriginalL'auteur tratto
J'ai connu le même problème sous Linux et résolu par la mise en au
LD_LIBRARY_PATH
variableEspère que cette aide
OriginalL'auteur Deepak Dickson
OriginalL'auteur user4218057