如何删除此异常“线程中的异常”主“java.lang.UnsatisfiedLinkError:java.library.path中没有jniopencv_objdetect”

时间:2016-07-30 12:30:56

标签: java eclipse opencv javacv face-recognition

我正在使用OpenCV 2.4.9,JavaCV 0.7,JAVA版本8和Eclipse IDE开展Face Recognition Project ...我正在不断地获得这些异常。下面的代码中是否有问题?这不是我的complette代码...... 请有人尽快帮助我......

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

例外:

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

2 个答案:

答案 0 :(得分:1)

This page介绍了如何运行OpenCV Java示例。你应该做两件事:

  1. 您需要调用System.LoadLibrary指定它使用的OpenCV DLL

    的System.loadLibrary(Core.NATIVE_LIBRARY_NAME);

  2. 确保DLL位于JVM可以找到的位置。如果这样做,有几种方法。我不使用Eclipse,但this似乎给出了一个很好的解释。或者,一个简单的小工具就是将DLL放到windows \ system32目录中

  3. 最后,如果您运行64位JVM但尝试使用32位DLL,则可能会出现问题。如果您仍然遇到问题,请确保使用匹配的JVM和DLL。

答案 1 :(得分:0)

看起来您在项目中使用的一个java库正在使用使用dll文件的jni调用。您是否正确安装了库?看起来它被称为opencv或与jniopencv_objdetect.dll相关的东西