【问题标题】:Error loading OpenCV library from Maven repository从 Maven 存储库加载 OpenCV 库时出错
【发布时间】:2019-10-28 06:33:24
【问题描述】:

我想执行一个简单的 OpenCV 代码来测试库是否被 Maven 很好地加载。

这是代码:

package helloworld;
import org.opencv.core.*;

public class Hello {

    public static void main(String[] args) 
    {
        nu.pattern.OpenCV.loadLibrary();
        System.out.println("Hey World !");
        Mat mat = Mat.eye(3, 3, CvType.CV_8UC1);
    }
}

这是我在尝试运行时得到的控制台输出,有两个错误:

java.lang.NoSuchFieldException: sys_paths 在 java.base/java.lang.Class.getDeclaredField(Class.java:2417) 在 nu.pattern.OpenCV.loadLibrary(OpenCV.java:207) 在 helloworld.Hello.main(Hello.java:9)

嘿,世界!

线程“main”中的异常 java.lang.UnsatisfiedLinkError: org.opencv.core.Mat.n_eye(III)J 在 org.opencv.core.Mat.n_eye(本机方法) 在 org.opencv.core.Mat.eye(Mat.java:1467) 在 helloworld.Hello.main(Hello.java:11)

我得到了 maven 存储库链接,查看了 post

您知道是什么原因造成的吗?

谢谢!

【问题讨论】:

    标签: java maven opencv


    【解决方案1】:

    尝试从另一个存储库下载库。

    <dependency>
        <groupId>org.openpnp</groupId>
        <artifactId>opencv</artifactId>
        <version>3.4.2-1</version>
    </dependency>
    

    有类似问题的帖子可以看我的answer

    【讨论】:

    • 感谢您的回答,但我“解决了”我的问题,如您所做的那样更改依赖项,并使用 nu.pattern.OpenCV.loadLocally();但是每次我启动程序时都会出现错误“您已加载库 /tmp/opencv_openpnp.../libopencv_java342.so 这可能已禁用堆栈保护。VM 将尝试修复堆栈保护。强烈建议您修复使用 'execstack -c ' 的库,或使用 '-z noexecstack' 链接它。”
    • 运行这个命令:execstack -c /tmp/opencv_openpnp.../libopencv_java342.so。这应该会有所帮助
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-03
    • 1970-01-01
    • 2021-01-03
    相关资源
    最近更新 更多