线程" main"中的例外情况java.lang.NoClassDefFoundError无法初始化类org.bytedeco.javacpp.avutil

时间:2016-06-08 09:42:39

标签: java opencv javacv

我有一个使用nh.Invoke(this, e); 库的java应用程序。

但是当我运行应用程序时,我收到以下异常。

bytedeco/javacv

代码如下,

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:386)
    at org.bytedeco.javacpp.Loader.load(Loader.java:354)
    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.diyoron.ai.examples.VideoFrameProccessor.main(VideoFrameProccessor.java:38)
Error getting static method ID of org/bytedeco/javacpp/Loader/putMemberOffset

根据README.MD中的以下声明

  

此外,我们需要设置javacpp.platform系统   属性(通过-D命令行选项)到类似的东西   android-arm,或者将javacpp.platform.dependencies设置为true   获取Android,Linux,Mac OS X和Windows的所有二进制文件。上   构建系统,这不起作用,我们需要添加   特定于平台的工件。有关Gradle和。的示例   sbt,请参考JavaCPP预设的README.md文件。   Scala用户可以使用的另一个选项是sbt-javacv。

〜参考GitHub

我添加了参数-Djavacpp.platform.dependencies =&#34; true&#34;,但我仍然得到了异常。我不确定是什么导致了这个问题,我在使用c ++包装器方面的经验非常少。

PS:我的机器中没有安装任何c ++依赖项/库或open-cv。  并且所有的解决方案都与Android有关,而且我在我的java相关应用程序中没有那么幸运。

1 个答案:

答案 0 :(得分:1)

添加以下依赖项解决了这个问题。

        <!-- http://mvnrepository.com/artifact/org.bytedeco/javacv -->
        <dependency>
            <groupId>org.bytedeco</groupId>
            <artifactId>javacv</artifactId>
            <version>1.2</version>
        </dependency>

        <!-- http://mvnrepository.com/artifact/org.bytedeco/javacpp -->
        <dependency>
            <groupId>org.bytedeco</groupId>
            <artifactId>javacpp</artifactId>
            <version>1.2.1</version>
        </dependency>


        <dependency>
            <groupId>org.bytedeco.javacpp-presets</groupId>
            <artifactId>opencv</artifactId>
            <version>3.1.0-1.2</version>
        </dependency>

        <dependency>
            <groupId>org.bytedeco.javacpp-presets</groupId>
            <artifactId>ffmpeg</artifactId>
            <version>3.0.2-1.2</version>
        </dependency>