使用 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 的异常“找不到依赖库”的主要内容,如果未能解决你的问题,请参考以下文章
Eclipse中的JNI Unsatisfied Link错误找不到依赖库
如何修复 JNI 项目中的 UnsatisfiedLinkError(找不到依赖库)
如何在没有 System32 的情况下解决“java.lang.UnsatisfiedLinkError:找不到依赖库”?