Eclipse Java OpenCV在Test src文件夹中出现unsatisfiedLinkError错误

7
在我的主要src文件夹中加载库时没有问题,但在测试src文件夹中出现错误。我仍然可以正常编译和运行所有测试,并且它们都通过了。
两个src文件夹都在路径中,我已经将opencv作为库引入。就像我说的,一切都正常工作,所以我猜这是Eclipse和显示错误的问题,而不应该显示错误?因此,主要问题在于它在视觉上很痛苦。

enter image description here

enter image description here

编辑2:我想再次强调一下,一切都正常工作,所有测试都在运行,只是它们会弹出问题(而且我看不到测试的错误,因为这个未指定链接错误在之前并掩盖了它们)

此外,在我的Windows和Ubuntu机器上也是同样的情况。

当我在System.loadLibrary之前打印出来时,我的路径也是正确的.../opencv-2.4.11/build/lib

编辑3:我尝试了Cibin William的答案,并放置了我的.dll路径,但没有用。

enter image description here

3个回答

2
您可以右键单击项目,然后点击构建路径 -> 配置构建路径,然后选择选项卡并选择OpenCV jar文件,然后展开它并选择本机库位置,然后单击编辑并浏览到OpenCV.dll文件,例如C:\opencv\build\java\x64C:\opencv\build\java\x86适用于32位系统。就是这样。 或者您可以通过编码(动态方式)加载库。
public static void loadOpenCV_Lib() throws Exception {
    // get the model
    String model = System.getProperty("sun.arch.data.model");
    // the path the .dll lib location
    String libraryPath = "C:/opencv/build/java/x86/";
    // check if system is 64 or 32
    if(model.equals("64")) {
        libraryPath = "C:/opencv/build/java/x64/";
    }
    // set the path
    System.setProperty("java.library.path", libraryPath);
    Field sysPath = ClassLoader.class.getDeclaredField("sys_paths");
    sysPath.setAccessible(true);
    sysPath.set(null, null);
    // load the lib
    System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
}

我已经完成了,并在我的问题中更新了一张图片。 - Benoit
这是将lib链接到项目的唯二途径。你可以尝试重新启动Eclipse,希望能解决问题。 - Bahramdun Adil

0
当我在Eclipse中运行OpenCV程序时,会出现unsatisfiedLInkError错误。我通过以下方式在Eclipse中导出库路径来解决这个错误:
1.右键单击项目,选择Debug as->Debug Configurations... 2.Debug Configuration窗口出现,选择顶部的Environment选项卡
3.在窗口右侧点击New按钮,会出现一个新的环境变量窗口
4.在Name中输入LD_LIBRARY_PATH,在Value中输入包含.dll文件的文件夹(如果.dll文件位于项目内的Lib文件夹中,请在Value中输入Lib
请尝试并回复...

@Benoit,同样的错误吗?你是否尝试将.dll文件复制到项目路径中或在项目内创建一个文件夹并添加.dll文件,然后按照我上面描述的方式添加该文件夹路径... - Cibin William

0

好的,我重新安装了Eclipse,问题解决了...叹气

这个bug在Eclipse Luna和Mars 4.5.1版本上都存在。

Mars 4.5.2版本运行良好。


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