web-dev-qa-db-fra.com

NO opencv_Java300 dans Java.library.path

Merci d'avance..

J'ai un projet qui utilise opencv-300.jar en tant que bibliothèque externe. J'ai essayé ceci dans Eclipse et dans natBeans. Dans les deux cas, cela fonctionne correctement lorsque j'exécute mon projet à partir de IDE lui-même. Je souhaite que mon projet l'exporte sous forme de fichier jar exécutable (ou exécutable). J’ai placé mon opencv_Java300.dll file dans le dossier source avec le fichier Java principal et son nom dans 

 System.loadLibrary("opencv_Java300");

J'ai placé opencv-300.jar dans des bibliothèques de fichiers jar externes et dans tous les autres fichiers nécessaires au programme principal. il fonctionne correctement lorsque vous exécutez à partir de IDE, mais lorsque je crée un fichier jar exécutable, il affiche une erreur.

   Exception in thread "main" Java.lang.UnsatisfiedLinkError: no     
   opencv_Java300 in
   Java.library.path
   at Java.lang.ClassLoader.loadLibrary(Unknown Source)
   at Java.lang.Runtime.loadLibrary0(Unknown Source)
   at Java.lang.System.loadLibrary(Unknown Source)
   at CropFaceImage.main(CropFaceImage.Java:27)

Dites-moi s'il vous plaît. Est-il possible de donner le programme Java.library.path in lui-même? Mon projet fonctionne avec succès même lorsque j'ai supprimé le chemin d'accès à opencv_Java300.dll fichier dans une bibliothèque externe. 

7
Anuj

J'ai essayé de passer la commande contenant le chemin pour opencv mais je n'ai trouvé aucun autre moyen. D'une certaine manière, j'ai essayé quelque chose qui a créé mon pot et il fonctionne correctement. J'ai copié le fichier opencv_Java300.dll et l'ai placé dans le répertoire qui se trouve à côté du fichier my jar, de même pour tous les fichiers de support. J'ai utilisé le code suivant pour le faire. 

String opencvpath = System.getProperty("user.dir") + "\\files\\";
String libPath = System.getProperty("Java.library.path");
System.load(opencvpath + Core.NATIVE_LIBRARY_NAME + ".dll");
10
Anuj

Vous pouvez utiliser un argument de ligne de commande comme ci-dessous et appeler votre classe qui a le

Java -Djava.library.path="Folder which contains your dll" ....
4
Kalyan Chavali

J'ai eu le même problème, résolu en changeant la bibliothèque système JRE. Il semble que le problème ne se produise que si vous utilisez jre1.8.0_65. Tout a bien fonctionné chez moi avec jre1.8.0_25, jre1.8.0.45 et jre1.8.0.66

1
nik_kobe

J'ai pu corriger l'erreur en supprimant ma System.loadLibrary("opencv_Java300"); du code et en ajoutant le fichier jar au chemin de classe dans mon build.xml:

<jar destfile="program.jar" basedir="build/classes">
    <manifest>
        <attribute name="Main-Class" value="com.src.program"/>
        <attribute name="Class-path" value="opencv-300.jar"/>
    </manifest>
</jar>
0
OxyDeadbeef

J'ai résolu mon problème lorsque j'ai configuré la bibliothèque native dans Eclipse . Vous devez choisir une bibliothèque référençant votre plate-forme OS.

Regardez ici: ajouter openCV au chemin de construction Java dans Eclipse .

0
Jackson William