[英]OpenCV 3.0.0 java.lang.UnsatisfiedLinkError in Eclipse
[英]OpenCV 4.3.0 java.lang.UnsatisfiedLinkError in Eclipse
我正在尝试与 Eclipse 中的 OpenCV 4.3.0 的 Java 绑定进行一些模板匹配,但总是会导致此模板出现错误:
Exception in thread "main" java.lang.UnsatisfiedLinkError: org.opencv.imgcodecs.Imgcodecs.imread_0(Ljava/lang/String;I)J
抛出此异常的代码行是这样的:
flowerTemplate = Imgcodecs.imread("/templates/flowerpot_white.png", Imgcodecs.IMREAD_COLOR);
我在 StackOverflow 和互联网上其他地方的类似问题上尝试了许多建议的解决方案,包括:
System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
System.load(<path_to_the_dll>);
File opencvLibrary = new File(System.mapLibraryName(Core.NATIVE_LIBRARY_NAME));
System.load(opencvLibrary.getAbsolutePath());
UnsatisfiedLinkError 是运行 Java 程序时发生的运行时异常。 因此,将您的文件放在源文件夹中是行不通的。
您需要它在您的程序可以找到它的地方可用。
例如看这篇文章:
https://www.javaworld.com/article/2077520/java-tip-23--write-native-methods.html
在其中,他们将库放置在 Linux 的库路径中。 在 windows 中,您同样可以将其放在当前目录(您正在运行的位置)或某个共享位置。
本文解释了 Window 的 dll 搜索顺序: https://docs.microsoft.com/en-us/windows/win32/dlls/dynamic-link-library-search-order
您不需要自己显式调用 System.loadLibrary() 。 那是图书馆的责任。
您的问题是 OpenCV 未正确安装在您的机器上或无法从 Eclipse 访问。
有关如何在 Eclipse 中工作的说明,请参阅:
在删除所有加载方法,然后将它们一个一个添加回来后,我确定该问题很可能是由 Eclipse 两次加载本机库文件夹引起的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.