带有 java.lang.UnsatisfiedLinkError 的 JavaCV
JavaCV with java.lang.UnsatisfiedLinkError
代码很简单,打开一张图片就可以了。
但是当我 运行 这个我有这样的错误:
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'
感谢您的帮助。
自己回答。
我的 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());
}
}
代码很简单,打开一张图片就可以了。 但是当我 运行 这个我有这样的错误:
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'
感谢您的帮助。
自己回答。
我的 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());
}
}