【问题标题】:Exception in thread "main" java.lang.UnsatisfiedLinkError: no jniavutil in java.library.path:线程 \"main\" java.lang.UnsatisfiedLinkError 中的异常:java.library.path 中没有 jniavutil:
【发布时间】:2023-01-18 13:46:22
【问题描述】:

在 ubuntu 22.04 的 intellij 中向项目添加和测试 javaCV 时出现以下错误。我已经阅读了文档 (https://github.com/bytedeco/javacv) 但不明白该怎么做。我为将 javaCV 添加到项目所做的是, 文件 -> 项目结构 -> 模块 -> 依赖项(+ 添加依赖项) 然后从我下载的“javacv-platform-1.5.7-bin”文件夹中选择 javacpp.jar、javacv.jar、opencv.jar 和 ffmpeg.jar。

这是我运行代码后得到的输出:

Exception in thread "main" java.lang.UnsatisfiedLinkError: no jniavutil in java.library.path: /usr/java/packages/lib:/usr/lib64:/lib64:/lib:/usr/lib
    at java.base/java.lang.ClassLoader.loadLibrary(ClassLoader.java:2434)
    at java.base/java.lang.Runtime.loadLibrary0(Runtime.java:848)
    at java.base/java.lang.System.loadLibrary(System.java:2015)
    at org.bytedeco.javacpp.Loader.loadLibrary(Loader.java:1800)
    at org.bytedeco.javacpp.Loader.load(Loader.java:1402)
    at org.bytedeco.javacpp.Loader.load(Loader.java:1214)
    at org.bytedeco.javacpp.Loader.load(Loader.java:1190)
    at org.bytedeco.ffmpeg.global.avutil.<clinit>(avutil.java:14)
    at java.base/java.lang.Class.forName0(Native Method)
    at java.base/java.lang.Class.forName(Class.java:488)
    at java.base/java.lang.Class.forName(Class.java:467)
    at org.bytedeco.javacpp.Loader.load(Loader.java:1269)
    at org.bytedeco.javacpp.Loader.load(Loader.java:1214)
    at org.bytedeco.javacpp.Loader.load(Loader.java:1190)
    at org.bytedeco.ffmpeg.avformat.Read_packet_Pointer_BytePointer_int.<clinit>(Read_packet_Pointer_BytePointer_int.java:45)
    at org.bytedeco.javacv.FFmpegFrameGrabber.<clinit>(FFmpegFrameGrabber.java:362)
    at com.cooltrickshome.MovieToImage.convertMovietoJPG(MovieToImage.java:31)
    at com.cooltrickshome.MovieToImage.main(MovieToImage.java:25)
Caused by: java.lang.UnsatisfiedLinkError: Could not find jniavutil in class, module, and library paths.
    at org.bytedeco.javacpp.Loader.loadLibrary(Loader.java:1767)
    ... 14 more

Process finished with exit code 1

谁能告诉我将 javaCV 添加到 intellij 项目中的确切步骤?

【问题讨论】:

  • 请尝试添加全部JAR 文件作为依赖项添加到您的项目中。
  • 通过在 jniLIbs 中添加 System.loadLibrary("avutil.57") 和 dylib 文件,我认为我在 mac 中更进一步,而且我似乎在构建正确的 dylib 文件时遇到了问题:线程“main”java 中的异常.lang.UnsatisfiedLinkError: /Users/xxx/ffmpeg-java-samples/src/main/jniLibs/libavutil.57.dylib: dlopen(/Users/xxx/ffmpeg-java-samples/src/main/jniLibs/libavutil.57 .dylib, 0x0001): tried: '/Users/xxx/ffmpeg-java-samples/src/main/jniLibs/libavutil.57.dylib'(mach-o 文件,但它是一个不兼容的架构(有(arm64),需要(x86_64)))

标签: javacv


【解决方案1】:

我有一个类似的问题,因为它找不到图书馆。我最终构建了自己的 ffmpeg,并在 jniLibs 中复制了 dylib 文件,并在静态范围内添加了类似 System.loadLibrary("avutil.57") 的行。

另一种方法是设置库路径: -Djava.library.path=/Users/xxx/ffmpeg-java-samples/src/main/jniLibs

由于您在 Ubuntu 中,到目前为止,它应该能够解决您的问题。但是,对于 mac,异常消息的最终结果变为

试过:'/Users/xxx/ffmpeg-java-samples/src/main/jniLibs/libavutil.57.dylib', 但遇到另一个问题:(mach-o 文件,但是不兼容 体系结构(有(arm64),需要(x86_64)))

我仍在为 mac M1 芯片部分找出 ffmpeg。

【讨论】:

    猜你喜欢
    • 2015-08-30
    • 2016-11-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多