使用 javacv 的异常“找不到依赖库”

Posted

技术标签:

【中文标题】使用 javacv 的异常“找不到依赖库”【英文标题】:exception " cannot find dependent library" using javacv 【发布时间】:2013-03-17 13:17:12 【问题描述】:

我尝试使用 JavaCV 在 eclipse 中实现一个程序。这是示例代码,

import static com.googlecode.javacv.cpp.opencv_core.*;
import static com.googlecode.javacv.cpp.opencv_imgproc.*;
import static com.googlecode.javacv.cpp.opencv_highgui.*;
public class JavaCVProj01 
         

    /**
     * @param args
     */
    public static void main(String[] args) 
        // TODO Auto-generated method stub
        IplImage img = cvLoadImage("Paris.jpeg");
        cvShowImage("Paris",img);
        cvSmooth(img,img,CV_GAUSSIAN,13);
        cvShowImage("BlurImage",img);

        cvWaitKey();
        cvReleaseImage(img);

    


当我运行程序时出现异常

Exception in thread "main" java.lang.UnsatisfiedLinkError: C:\Users\Bhavana\AppData\Local\Temp\javacpp34629596157210\jniopencv_core.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:566)
    at com.googlecode.javacpp.Loader.load(Loader.java:489)
    at com.googlecode.javacpp.Loader.load(Loader.java:431)
    at com.googlecode.javacv.cpp.opencv_core.<clinit>(opencv_core.java:136)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Unknown Source)
    at com.googlecode.javacpp.Loader.load(Loader.java:453)
    at com.googlecode.javacv.cpp.opencv_imgproc.<clinit>(opencv_imgproc.java:97)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Unknown Source)
    at com.googlecode.javacpp.Loader.load(Loader.java:453)
    at com.googlecode.javacv.cpp.opencv_highgui.<clinit>(opencv_highgui.java:85)
    at demo.main(demo.java:13)
Caused by: java.lang.UnsatisfiedLinkError: no opencv_core244 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:593)
    at com.googlecode.javacpp.Loader.load(Loader.java:481)
    ... 11 more

我也为环境变量提供了正确的路径。 我还从 javacv-bin 添加了外部 Jar 文件。 我给的路径是 类路径 D:\opencv\build\x86\vc10\lib D:\opencv\build\common\tbb\ia32\vc10 D:\opencv\build\x86\vc10\staticlib

路径 D:\opencv\build\common\tbb\ia32\vc10 D:\opencv\build\x86\vc10\bin

我该怎么办?我还需要添加哪些依赖库?

【问题讨论】:

【参考方案1】:

只需将 opencv 目录复制到 C:\ 驱动器即可解决此问题。与正确设置所有路径相比,这可能是最简单的方法。这在 JavaCV 文档的某处提到(现在找不到)。

【讨论】:

【参考方案2】:

如果您的 OpenCV 版本与 JavaCV-Bin 不兼容,则会发生这些错误。

例如:

OpenCV 2.4.0 和 JAVA-BIN 0.2 = 不兼容

OpenCV 2.4.3 和 JAVA-BIN 0.3 = 兼容


确保安装后重启

【讨论】:

请不要将整个答案输入大写,您似乎在大喊大叫;)谢谢!【参考方案3】:

您的 PATH 不应如下所示:

D:\opencv\build\common\tbb\ia32\vc10 D:\opencv\build\x86\vc10\bin

但是像这样:

"D:\opencv\build\common\tbb\ia32\vc10";"D:\opencv\build\x86\vc10\bin"

(注意分号而不是空格)

同样适用于 CLASSPATH !

【讨论】:

好的,我确实给了一个分号,但我之前忘了在这里提及。我仍然遇到同样的错误。【参考方案4】:

几乎是我回答的same question。

您应该将opencv_java244.dll 的路径添加到%PATH% 环境变量中。

【讨论】:

以上是关于使用 javacv 的异常“找不到依赖库”的主要内容,如果未能解决你的问题,请参考以下文章

UnsatisfiedLinkError:找不到依赖库

Eclipse中的JNI Unsatisfied Link错误找不到依赖库

如何修复 JNI 项目中的 UnsatisfiedLinkError(找不到依赖库)

如何在没有 System32 的情况下解决“java.lang.UnsatisfiedLinkError:找不到依赖库”?

配置ConvenientBanner时出现的问题

保存捕获的图像时出现 JavaCV 错误