【问题标题】:JavaCV with java.lang.UnsatisfiedLinkError带有 java.lang.UnsatisfiedLinkError 的 JavaCV
【发布时间】:2019-07-10 12:44:56
【问题描述】:

代码很简单,打开一张图片即可。 但是当我运行它时,我有一个这样的错误:

Exception in thread "main" java.lang.UnsatisfiedLinkError: org.opencv.imgcodecs.Imgcodecs.imread_1(Ljava/lang/String;)J
    at org.opencv.imgcodecs.Imgcodecs.imread_1(Native Method)
    at org.opencv.imgcodecs.Imgcodecs.imread(Imgcodecs.java:112)

根据搜索到的解决方案,我把这个System.load(Core.NATIVE_LIBRARY_NAME)加到main()上,不行:

Exception in thread "main" java.lang.UnsatisfiedLinkError: Expecting an absolute path of the library: opencv_java401
    at java.lang.Runtime.load0(Runtime.java:806)
    at java.lang.System.load(System.java:1086)

或者这个System.loadLibrary(Core.NATIVE_LIBRARY_NAME),还是不行:

Exception in thread "main" java.lang.UnsatisfiedLinkError: no opencv_java401 in java.library.path
    at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1867)
    at java.lang.Runtime.loadLibrary0(Runtime.java:870)
    at java.lang.System.loadLibrary(System.java:1122)

我的项目是用gradle构建的,依赖是(官方文档):

compile group: 'org.bytedeco', name: 'javacv-platform', version: '1.5'

感谢您的帮助。

【问题讨论】:

    标签: javacv


    【解决方案1】:

    自我回答。
    我的import 是错误的。应该是
    import static org.bytedeco.opencv.global.opencv_imgcodecs.imread
    而不是
    import static org.opencv.imgcodecs.Imgcodecs.imread
    这个错误导致使用了错误的包。

    正确的代码是:

    import org.bytedeco.opencv.opencv_core.Mat;
    import static org.bytedeco.opencv.global.opencv_imgcodecs.imread;
    
    public class DemoApplication {
        public static void main(String[] args) {
            Mat image = imread("/root/test.png");
            System.out.println("width:" + image.cols());
            System.out.println("height:" + image.rows());
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2011-10-10
      • 1970-01-01
      • 2016-09-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多