4

我目前正在尝试在我的 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 作为它的库之一,它有。我也尝试过“清理”所有项目,但这并没有奏效(曾经有过吗?)。因此,我已按照设置教程中的所有说明进行操作,但仍然无法正常工作。

有谁知道这里可能存在什么问题?提前致谢...

4

4 回答 4

11

问题是找不到本机opencv库,因为它不在java.library.path(它是本机库,它不应该在通常的java类路径中,但它必须在java.library.path中)。

您的 opencv 发行版应包含:

  • 一个java库:opencv249.jar。这个库主要是一个带有 jni 东西的 Java 到本机库,允许您从 Java 代码进行本机调用。它必须在类路径中(根据你的错误和你的解释:它在你的类路径中——>这里一切正常)

  • 一个名为的本地库libopencv_java249.so,它必须在您的java.library.path. 显然:不是:UnsatisfiedLinkError 是缺少本机库的症状。要包含此本机库:使用以下参数启动您的 java 程序:

    -Djava.library.path=/path/to/the/directory/of/ibopencv_java249.so

于 2015-02-21T13:02:32.947 回答
3

在 Ubuntu 上对我有用的另一种可能的解决方案:不要将 JVM 参数设置为确切的libopen.so文件,而是尝试将其设置为文件夹:

-Djava.library.path=/opencv-3.2.0/opencv/build/lib/
于 2017-03-24T09:46:02.483 回答
0

美好的一天!我从另一个论坛看到了这个。

如何从 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 的首选项设置的情况。

这种方法对我有用。

于 2021-03-10T09:46:32.443 回答
-1

我在 ubuntu 14.o 上遇到了同样的问题,我很努力地找到了这个解决方案。

  1. 使用下面的行来打印你的 Native lib 路径: System.out.println(System.getProperty("java.library.path"));
  2. 如果要添加外部 openc4-version.jar,则在 eclipse 中打开 BuildConfigurationPath->Library->opencv249.jar->Native Library 并单击编辑并选择外部文件夹,该文件夹将位于 /home/dav/Downloads/opencv-2.4 .9/build/lib

在此之前,我按照他们在 java-opencv 快速入门教程中提到的方式构建了 opencv,方法是在 opencv 解压缩文件夹中创建构建文件夹,然后运行 ​​2 个命令 1.cmake -DBUILD_SHARED_LIBS=OFF .. 如果出现错误,请检查是否已安装 2.make -j8

完毕。

于 2015-09-03T12:00:57.557 回答