在Eclipse中将OpenCV添加到Java Build Path

10

我在将openCV添加到eclipse项目的构建路径方面遇到了问题。我按照这个网站上的教程做了: http://docs.opencv.org/2.4.4-beta/doc/tutorials/introduction/desktop_java/java_dev_intro.html#create-a-simple-java-project-in-eclipse

但执行代码片段时,控制台输出如下:

Exception in thread "main" java.lang.UnsatisfiedLinkError: no opencv-java2.4.4 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 camStatisticsTests.RawTests.main(RawTests.java:20)

我该如何才能在Java和Eclipse中使用OpenCV?我想将其作为普通的Java库来使用。

6个回答

8

我曾经也遇到过同样的问题。

这是因为我在“Native library location”配置中出现了错误:

打开Eclipse -> 窗口 -> 首选项:

打开Eclipse -> 窗口 -> 首选项

进入用户库:

enter image description here

确保你的本地库路径正确(将c:/opencv-2.4.9改为你自己的opencv文件夹):

C:/opencv-2.4.9/build/java/x64

而不是:

C:/opencv-2.4.9/build/x64

我错过了/java文件夹...

2
OpenCV Java库已正确链接到您的Eclipse项目。
问题在于OpenCV本地库不在java.library.path中。异常是由该行引发的。
static{ System.loadLibrary("opencv_java244"); }

这将链接Java库到本地库。

当您在计算机上安装OpenCV时,它还会在系统的某个位置安装本地dll库,当您调用System.loadLibrary时,您告诉Java搜索并加载此库。

您目前的问题是Java无法在系统中找到此库,可能是因为该库不在其中一个java.library.path文件夹中,或者因为您尚未安装OpenCV(还要查看版本,也许您没有2.4.4,因为最新版本是2.4.5,在这种情况下,您将不得不适应字符串)。

我刚刚注意到您的异常是关于“opencv-java2.4.4”的。确保在您的System.loadLibrary调用中拼写正确的形式为“opencv_java244”。

我还将您重定向到我的答案之一,它与JavaCV有关,但更详细地解释了正在进行的操作。


谢谢您的回答,但实际上我自己找到了问题所在。我必须给库提供它的dll文件。我不知道为什么,也许您可以给我更多的见解... - kiltek
1
dll 库必须放在 Java 可以找到的地方。它可以放在 Windows 的 $PATH 中,在 java.library.path 中列出的文件夹中,通过指定 Eclipse 本机构建路径(您已经完成了此操作),或通过传递 -Djava.library.path 到命令行来实现。OpenCV 需要 dll 的原因是因为 OpenCV 是一个 C++ 库,要从 Java 中使用它,我们需要 JNI。JNI 将 Java 方法调用映射到本机库方法,最终调用 OpenCV 库来“完成工作”。 - StreakyCobra

1
对于我来说,Eclipse > 外部jar > 本地库配置 = opencv/build/lib 工作正常。

1
我找到了解决方案。实际的dll文件位于openCV\opencv\build\java\x64\文件夹中。在我的情况下,它的名称是opencv_java247.dll,所以我已经在我的Java代码中将System.loadLibrary("opencv_java244")更改为System.loadLibrary("opencv_java247")。我还将本地库位置设置为E:/Sagar_tools/tools/openCV/opencv/build/java/x64(这是我的dll完整路径)。

0
我已经找到了解决方案。教程跳过了一个步骤,需要将一个dll添加到“本地构建路径”中。这个dll位于“opencv/build/java/x86”目录下,我猜是为32位java准备的。虽然我不知道为什么会这样。如果有人能解释一下就好了。

-1

将代码更改为System.loadLibrary("opencv_java244"),希望您将本地路径设置为正确的文件夹,并且在构建路径中设置了opencv jar。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接