gpt4 book ai didi

java - Eclipse 中的 OpenCV 4.3.0 java.lang.UnsatisfiedLinkError

转载 作者:行者123 更新时间:2023-12-01 16:14:34 25 4
gpt4 key购买 nike

我试图在 Eclipse 中进行一些与 OpenCV 4.3.0 的 Java 绑定(bind)匹配的模板,但尝试加载模板图像总是会导致此错误:

线程“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 和互联网上其他地方针对类似问题提出的许多解决方案,包括:

  • 使用 Eclipse 中用户库定义中的“ native 库位置”变量指向 native 库文件夹。
  • 将 native 库文件夹位置添加到我的 PATH 变量中。
  • 将 native 库 .dll 位置添加到我的 PATH 变量中。
  • 设置 Eclipse 运行配置以将 native 库文件夹和 .dll 位置添加到 PATH 和 CLASSPATH 变量。
  • 使用适当的 Java 代码加载库,按照我所建议的三种方式,在三个不同的位置,所有这些都在抛出异常的代码之前运行。
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());
  • 将有问题的 .dll 放入我的源文件夹和每个子文件夹中。我在 Eclipse 中运行它,因此这也是程序的工作目录。

最佳答案

UnsatisfiedLinkError 是运行 Java 程序时发生的运行时异常。因此将文件放在源文件夹中将不起作用。

您需要将其放在您的程序可以找到的地方。

例如,请参阅这篇文章:

https://www.javaworld.com/article/2077520/java-tip-23--write-native-methods.html

他们将库放置在 Linux 的库路径中。在 Windows 中,您可以类似地将其放置在当前目录(您运行的位置)或某个共享位置。

本文解释了Window的dll搜索顺序:https://learn.microsoft.com/en-us/windows/win32/dlls/dynamic-link-library-search-order

您不需要自己显式调用 System.loadLibrary()。这是图书馆的责任。

您的问题是 OpenCV 在您的计算机上安装不正确或者无法从 Eclipse 访问。

有关如何在 Eclipse 中工作的说明,请参阅:

Add .dll to java.library.path in Eclipse/PyDev Jython project

关于java - Eclipse 中的 OpenCV 4.3.0 java.lang.UnsatisfiedLinkError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62439921/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com