【问题标题】:How do I solve a java.lang.UnsatisfiedLinkError:no opencv_java455 in java.library.path: error?如何解决 java.lang.UnsatisfiedLinkError:no opencv_java455 in java.library.path: 错误?
【发布时间】:2023-02-12 20:20:14
【问题描述】:

我已经通读了 bytedeco 的 opencv gitbub 存储库的信息文档,并在互联网上进行了广泛搜索,但找不到有效的解决方案。

我正在尝试使用 gradle 创建一个 openCV javaFX 应用程序。

我在我的 gradle.build 文件中使用了这个依赖项:实现组:'org.bytedeco',名称:'javacv-platform',版本:'1.5.7'

当我运行 System.loadLibrary(Core.NATIVE_LIBRARY_NAME); 时,Core.NATIVE_LIBRARY_NAME 返回正确的 opencv 版本 (opencv_java455)。

但是,System.loadLibrary("opencv_java455") 失败并出现此错误:java.lang.UnsatisfiedLinkError: no opencv_java455 in java.library.path:

解决这个问题的正确方法是什么?

从我的在线挖掘中,我认为我可能丢失了一个 .dylib 文件。但是,我不知道如何找到这个文件或如何正确指向它。我在外部库中没有看到 opencv_java455.dylib 文件。

在此先感谢您的帮助

以下是一些更有用的信息:

操作系统:

MacOS 蒙特雷

M1 芯片 Macbook pro

使用智能

【问题讨论】:

  • 关于opencv库:原生库在java.library.path吗?原生库是为M1架构编译的吗?本机库是否与您的操作系统版本兼容?如果其中任何一个问题的答案是否定的,那么您的设置可能无法正常工作。
  • 确保您使用的是 JDK 和 JavaFX 版本 17.0.2+,否则在 M1 架构上运行 JavaFX 的本机部分时会出现问题(崩溃)。

标签: java opencv gradle javafx bytedeco-javacv


【解决方案1】:

有一个特殊的方法可以调用:

Loader.load(opencv_java.class);

确保 javacpp 在依赖项中,此调用会将所有需要的库推送到 javacpp 缓存中。然后不需要手动调用加载任何库。

【讨论】:

    猜你喜欢
    • 2018-01-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-23
    • 2021-05-15
    • 2020-05-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多