Comment puis-je charger et utiliser la bibliothèque native de java?
J'ai une classe java, l'appel d'une méthode native et en essayant de charger la bibliothèque:
import java.io.UnsupportedEncodingException;
public class Main {
public static native String getMyString(String s);
/**
* @param args
* @throws UnsupportedEncodingException
*/
public static void main(String[] args) throws UnsupportedEncodingException {
//TODO Auto-generated method stub
//System.out.println("here!");
String s2 = getMyString("string text");
for (Byte b : s2.getBytes("UTF-8")) {
System.out.print(b);
System.out.print(",");
}
}
static {
System.loadLibrary("mylib.so");
}
}
La "mylib.alors," est dans le répertoire, où Main.class est situé.
Quand je lance java Main
- je obtenir de l'exception suivante:
Exception in thread "main" java.lang.UnsatisfiedLinkError: no mylib.so in java.library.path
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1856)
at java.lang.Runtime.loadLibrary0(Runtime.java:845)
at java.lang.System.loadLibrary(System.java:1084)
at Main.<clinit>(Main.java:24)
Que dois-je modifier pour que cela wark?
J'ai essayé de réglage de la bibliothèque de chemin d'accès complet sans succès
Sauf si vous avez codé pour la JNI, vous n'allez probablement pas obtenir beaucoup plus loin même après vous avez réussi à charger votre .. S'il vous plaît vérifier le Soleil JNI tutoriel: java.sun.com/developer/onlineTraining/Programming/JDCBook/...
OriginalL'auteur Arsen Zahray | 2012-08-02
Vous devez vous connecter pour publier un commentaire.
Procédez de la manière suivante:
J'ai fait les modifications et exécuter le programme avec java Principal -Djava.de la bibliothèque.path=/root/, sans succès
OriginalL'auteur Reimeus
"Comment charger une bibliothèque native"
Où tmpDirName est un répertoire où vous stockez votre bibliothèque.
Ou vous pouvez le modifier au-dessus de la classe et de l'utilisation du répertoire temporaire de votre système de propriété, comme ceci:
!Mais d'abord, vous devez copier vos native lib 🙂
Alors de charger la bibliothèque native appel "addLibsToJavaLibraryPath" méthode statique bloc dans "la plupart racine" de la classe avant tout constructeur de la classe a été exécuté.
OriginalL'auteur Karol Król
Vous devez ajouter au chemin de la bibliothèque:
-Djava.bibliothèque.chemin= (c'est dans la commande java).
si vous exécutez à partir d'eclipse:
Comment faire pour ajouter à la bibliothèque native de java".de la bibliothèque.chemin" avec Eclipse lancement (au lieu de remplaçant)
OriginalL'auteur Avihai Marchiano
Comme Reimeus répondu.
Ou vous pouvez utiliser
Système.load("/Bibliothèque/Chemin/libsample.donc,");
OriginalL'auteur twid