【问题标题】:How to remove this Exception "Exception in thread "main" java.lang.UnsatisfiedLinkError: no jniopencv_objdetect in java.library.path"如何删除此异常“线程“主”java.lang.UnsatisfiedLinkError 中的异常:java.library.path 中没有 jniopencv_objdetect”
【发布时间】:2016-12-05 01:36:48
【问题描述】:

我正在使用 OpenCV 2.4.9、JavaCV 0.7、JAVA 版本 8 和 Eclipse IDE 进行人脸识别项目......我不断收到这些异常......下面的代码有问题吗?这不是我的完整代码... 请有人尽快帮助我...

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

【问题讨论】:

  • 这不是你的代码,你有一个 dll 问题。 jniopencv_objdetect.dll 不在 java.library.path 中,或者它依赖的 dll 丢失。
  • 那么我该如何添加呢?你知道任何可能的解决方案吗??

标签: java eclipse opencv javacv face-recognition


【解决方案1】:

看起来您在项目中使用的 java 库之一正在使用使用 dll 文件的 jni 调用。您是否正确安装了库?貌似叫opencv之类的和jniopencv_objdetect.dll有关的东西

【讨论】:

    【解决方案2】:

    This page 描述了如何运行 OpenCV Java 示例。您需要做两件事:

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

      System.loadLibrary(Core.NATIVE_LIBRARY_NAME);

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

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

    【讨论】:

      猜你喜欢
      • 2015-08-30
      • 2016-11-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多