2016-07-30 1 views
1

Je travaille sur le projet de reconnaissance des visages en utilisant OpenCV 2.4.9, JavaCV 0.7, version JAVA 8 et IDE Eclipse ... Je reçois ces exceptions en permanence .. Y at-il quelque chose de mal dans le code suivant? Ce n'est pas mon code complette ... S'il vous plaît quelqu'un me aider le plus rapidement possible ...Comment faire pour supprimer cette exception "Exception dans le fil" principal "java.lang.UnsatisfiedLinkError: pas jniopencv_objdetect dans java.library.path"

import com.googlecode.javacpp.Loader; 
import com.googlecode.javacv.cpp.opencv_objdetect; 
Loader.load(opencv_objdetect.class); 

Exceptions:

Exception in thread "main" java.lang.UnsatisfiedLinkError: no jniopencv_objdetect 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 com.googlecode.javacpp.Loader.loadLibrary(Loader.java:711) 
    at com.googlecode.javacpp.Loader.load(Loader.java:586) 
    at com.googlecode.javacpp.Loader.load(Loader.java:540) 
    at com.googlecode.javacv.cpp.opencv_objdetect.<clinit>(opencv_objdetect.java:91) 
    at java.lang.Class.forName0(Native Method) 
    at java.lang.Class.forName(Unknown Source) 
    at com.googlecode.javacpp.Loader.load(Loader.java:561) 
    at FaceRecognizer.<init>(FaceRecognizer.java:56) 
    at FaceRecognizer.main(FaceRecognizer.java:112) 
Caused by: java.lang.UnsatisfiedLinkError: C:\Users\XYX\AppData\Local\Temp\javacpp183187286948746\jniopencv_objdetect.dll: Can't find dependent libraries 
    at java.lang.ClassLoader$NativeLibrary.load(Native Method) 
    at java.lang.ClassLoader.loadLibrary0(Unknown Source) 
    at java.lang.ClassLoader.loadLibrary(Unknown Source) 
    at java.lang.Runtime.load0(Unknown Source) 
    at java.lang.System.load(Unknown Source) 
    at com.googlecode.javacpp.Loader.loadLibrary(Loader.java:700) 
    ... 8 more 
+0

Ce n'est pas votre code, vous avez un problème de dll. Soit jniopencv_objdetect.dll n'est pas dans le java.library.path ou une DLL il dépend de est manquant. –

+0

Alors, comment puis-je l'ajouter? vous connaissez une solution possible ?? –

Répondre

1

This page donne une description de comment faire fonctionner un échantillon OpenCV Java. Il devrait y avoir deux choses que vous devez faire:

  1. Vous devez appeler System.loadLibrary spécifiant les DLL OpenCV qu'il utilise

    System.loadLibrary (Core.NATIVE_LIBRARY_NAME);

  2. Assurez-vous que la DLL se trouve quelque part où elle peut être trouvée par la machine virtuelle Java. Il y a plusieurs façons de le faire. Je n'utilise pas Eclipse mais this semble donner une bonne explication. Sinon, un simple Bodge juste pour faire avancer les choses de travail est de laisser tomber la DLL dans le répertoire windows \ system32

Enfin il peut y avoir un problème si vous exécutez un 64 JVM bits mais en essayant d'utiliser une DLL 32 bits . Si vous rencontrez toujours des problèmes, assurez-vous que vous utilisez la JVM et la DLL correspondantes.

0

Il ressemble à l'une des bibliothèques de Java que vous utilisez dans votre projet utilise des appels jni qui utilise des fichiers dll. Avez-vous installé la bibliothèque correctement? On dirait qu'il s'appelle opencv ou quelque chose qui est lié à jniopencv_objdetect.dll