java.lang.NoClassDefFoundError:无法初始化类org.bytedeco.javacpp.avutil [英] java.lang.NoClassDefFoundError: Could not initialize class org.bytedeco.javacpp.avutil
问题描述
我正在使用Windows10,JDK1.8版本的eclipse-neon, 我收到以下异常.
I am using Windows10, eclipse-neon with JDK1.8 version, I am getting the following exception.
Exception in thread "main" java.lang.NoClassDefFoundError: Could not initialize class org.bytedeco.javacpp.avutil
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Unknown Source)
at org.bytedeco.javacpp.Loader.load(Loader.java:385)
at org.bytedeco.javacpp.Loader.load(Loader.java:353)
at org.bytedeco.javacpp.avformat$AVFormatContext.<clinit>(avformat.java:2719)
at org.bytedeco.javacv.FFmpegFrameGrabber.startUnsafe(FFmpegFrameGrabber.java:391)
at org.bytedeco.javacv.FFmpegFrameGrabber.start(FFmpegFrameGrabber.java:385)
at com.segment.processor.AudioMain.main(ApacheMathAudioMain.java:20)
Error getting static method ID of org/bytedeco/javacpp/Loader/putMemberOffset
这是我在pom.xml中使用的依赖项
here are the dependencies I am using in my pom.xml
<dependency>
<groupId>org.bytedeco</groupId>
<artifactId>javacv</artifactId>
<version>1.2</version>
</dependency>
<dependency>
<groupId>org.bytedeco.javacpp-presets</groupId>
<artifactId>ffmpeg</artifactId>
<version>3.0.2-1.2</version>
</dependency>
<dependency>
<groupId>org.bytedeco.javacpp-presets</groupId>
<artifactId>opencv</artifactId>
<version>3.1.0-1.2</version>
</dependency>
<dependency>
<groupId>org.bytedeco</groupId>
<artifactId>javacpp</artifactId>
<version>0.10</version>
</dependency>
推荐答案
第一个问题
您的版本不匹配.版本0.10
中的org.bytedeco.javacpp
来自 2014年12月,而其他所有版本均来自 2016年5月.您需要使用org.bytedeco.javacpp
的1.2
版本,或者更好,将所有依赖项更新为最新版本.
Your versions don't match. org.bytedeco.javacpp
in version 0.10
is from Dec 2014, while all your other versions are from May 2016. You need to use version 1.2
of org.bytedeco.javacpp
, or better yet, update all dependencies to the latest version.
您可以在此处查看版本:
You can see the versions here:
org.bytedeco.javacpp-presets»opencv
org.bytedeco.javacpp-presets»ffmpeg
第二个问题
您仅包括Java代码的依赖关系,但不包括本机代码的依赖关系(opencv和ffmpeg均为本机库).您需要改为包含opencv-platform
和ffmpeg-platform
:
You include the dependencies for Java code only, but you don't include the dependencies for native code (both opencv and ffmpeg are native libraries). You need to include opencv-platform
and ffmpeg-platform
instead:
<dependency>
<groupId>org.bytedeco</groupId>
<artifactId>javacpp</artifactId>
<version>1.4.1</version>
</dependency>
<dependency>
<groupId>org.bytedeco</groupId>
<artifactId>javacv</artifactId>
<version>1.4.1</version>
</dependency>
<dependency>
<groupId>org.bytedeco.javacpp-presets</groupId>
<artifactId>opencv-platform</artifactId>
<version>3.4.1-1.4.1</version>
</dependency>
<dependency>
<groupId>org.bytedeco.javacpp-presets</groupId>
<artifactId>ffmpeg-platform</artifactId>
<version>3.4.2-1.4.1</version>
</dependency>
这将使Maven下载并包含适用于Android,Linux,MacOS和Windows(x86和x64)的opencv和ffmpeg库.
This will make Maven download and include opencv and ffmpeg libraries for Android, Linux, MacOS and Windows, both x86 and x64.
这篇关于java.lang.NoClassDefFoundError:无法初始化类org.bytedeco.javacpp.avutil的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!