【发布时间】: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