我目前正在尝试在 32 位笔记本电脑上设置 OpenCV,但我不断收到一条错误消息,这让我很困惑:
Exception in thread "main" java.lang.UnsatisfiedLinkError: no opencv_java249 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 hello.main(hello.java:8)
我尝试过进行一些切换,例如进入用户库并将本机库位置更改为 \x64 而不是 \x86,但这没有用。我还确保我的 Java 项目将 OpenCV-2.4.9 作为其库之一,它已经拥有了。我也尝试过“清理”所有项目,但这并没有奏效(有吗?)。因此,我已按照设置教程中的所有说明进行操作,但仍然无法正常工作。
有谁知道这里可能出现什么问题吗?预先感谢...
问题是找不到原生opencv库,因为它不在
java.library.path
中(它是原生库,不应该在通常的java类路径中,但必须在java.library.path中)。
您的 opencv 发行版应包含:
java 库:opencv249.jar。这个库主要是一个java到native的库,带有jni的东西,允许您从java代码进行本机调用。它必须在类路径中(并且根据您遇到的错误和您的解释:它在您的类路径上 --> 这里一切正常)
一个名为
libopencv_java249.so
的本机库,它必须位于您的 java.library.path
中。显然:事实并非如此:UnsatisfiedLinkError 是缺少本机库的症状。要包含此本机库:使用以下参数启动您的 java 程序:
-Djava.library.path = /路径/到/ibopencv_java249.so的/目录
在 Ubuntu 上对我有用的另一个可能的解决方案: 不要将 JVM 参数设置为确切的
libopen.so
文件,而是尝试将其设置为文件夹:
-Djava.library.path=/opencv-3.2.0/opencv/build/lib/
美好的一天!我从其他论坛看到了这个。
如何从 Eclipse 设置 java.library.path
我发现你应该从 opencv 复制 .dll 文件并将其粘贴到 Windows 文件夹中。为此,请从此路径文件夹中找到 .dll
opencv>build>java>x64(适用于64位平台) 或者 opencv>build>java>x86(适用于 x86/32 位平台)。
复制 .dll 文件并将其粘贴到您的 Windows 文件夹( c:/windows ),然后您可以重新编译您的工作以检查它是否有效。
*注意,本教程仅适用于您已将 opencv 的 .jar 文件设置为 eclipse 的首选项设置的情况。
这个方法对我有用。
在 Netbeans 中使用 Java,当包含时
-Djava.library.path="E:\Program Files\opencv\build\java\x64"
在
Project Property>Run
中我只是忘记了路径之间的双引号。添加双引号然后一切正常。
我在 ubuntu 14.o 上遇到了同样的问题,我费了很大劲才找到这个解决方案。
在此之前,我按照 java-opencv 快速入门教程中提到的方式构建了 opencv,方法是在 opencv 解压文件夹中创建 build 文件夹,然后运行 2 个命令 1.cmake -DBUILD_SHARED_LIBS=OFF .. 如果出现错误,请检查是否已安装 2.make -j8
完成。