java.lang.NoClassDefFoundError:无法初始化类org.bytedeco.javacpp.avutil

Sat*_*Sat 7 java javacv javacpp

我正在使用Windows10,eclipse-neon和JDK1.8版本,我得到以下异常.

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
Run Code Online (Sandbox Code Playgroud)

这是我在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>
Run Code Online (Sandbox Code Playgroud)

Max*_*mer 9

第一个问题

您的版本不匹配.org.bytedeco.javacpp版本0.102014年12月开始,而所有其他版本均从2016年5月开始.您需要使用版本1.2org.bytedeco.javacpp或者更好的,更新所有的依赖到最新版本.

你可以在这里看到版本:

org.bytedeco.javacpp-presets»opencv

org.bytedeco.javacpp-presets»ffmpeg

org.bytedeco»javacv

org.bytedeco»javacpp

第二个问题

您只包含Java代码的依赖项,但不包括本机代码的依赖项(opencv和ffmpeg都是本机库).你需要包括opencv-platform,ffmpeg-platform而不是:

<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>
Run Code Online (Sandbox Code Playgroud)

这将使Maven下载并包含适用于Android,Linux,MacOS和Windows的opencv和ffmpeg库,包括x86和x64.