线程“main”中的异常java.lang.UnsatisfiedLinkError:java.library.path中没有opencv_java249

时间:2015-02-21 10:32:02

标签: java opencv java-native-interface nativelibrary

我目前正在尝试在我的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 个答案:

答案 0 :(得分:9)

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

您的opencv发行版应包含:

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

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

    -Djava.library.path = /路径/到/ /目录/的/ ibopencv_java249.so

答案 1 :(得分:2)

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

-Djava.library.path=/opencv-3.2.0/opencv/build/lib/

答案 2 :(得分:0)

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

How to set the java.library.path from Eclipse

我发现您应该从 opencv 复制 .​​dll 文件并将其粘贴到 Windows 文件夹中。为此,请从此路径文件夹中找到 .dll

opencv>build>java>x64(64 位平台) 要么 opencv>build>java>x86(适用于 x86/32 位平台)。

复制 .dll 文件并将其粘贴到您的 windows 文件夹 ( c:/windows ) 之后,您可以重新编译您的工作以检查它是否有效。

*注意本教程只有在你已经将opencv的.jar文件设置为eclipse的preference设置后才适用。

这个方法对我有用。

答案 3 :(得分:-1)

我在ubuntu 14.o上遇到了同样的问题,我经常苦苦挣扎,找到了这个解决方案。

  1. 使用下面的行打印您的Native lib路径: 的System.out.println(System.getProperty("的java.library.path&#34));
  2. 如果你正在添加外部openc4-version.jar,那么在eclipse中打开 BuildConfigurationPath-> Library-> opencv249.jar-> Native Library 然后单击编辑并选择将位于/home/dav/Downloads/opencv-2.4.9/build/lib
  3. 内的外部文件夹

    在此之前我通过在opencv unziped文件夹中创建build文件夹,在java-opencv快速入门教程中提到了opencv,然后运行了2个命令 1.cmake -DBUILD_SHARED_LIBS = OFF .. 如果你收到错误,请检查make是否安装 2.make -j8

    完成。