【问题标题】:Could not initialize class org.bytedeco.javacpp.avutil on OS X along with Maven in JavaCV无法在 OS X 上初始化类 org.bytedeco.javacpp.avutil 以及 JavaCV 中的 Maven
【发布时间】:2015-02-28 06:03:52
【问题描述】:

我已将以下依赖项添加到我的 maven 项目中。

<dependency>
        <groupId>org.bytedeco</groupId>
        <artifactId>javacpp</artifactId>
        <version>0.10</version>
    </dependency>
    <dependency>
        <groupId>org.bytedeco</groupId>
        <artifactId>javacv</artifactId>
        <version>0.10</version>
    </dependency>
    <dependency>
        <groupId>org.bytedeco.javacpp-presets</groupId>
        <artifactId>opencv</artifactId>
        <version>2.4.10-0.10</version>
    </dependency>
    <dependency>
        <groupId>org.bytedeco.javacpp-presets</groupId>
        <artifactId>ffmpeg</artifactId>
        <version>2.5.1-0.10</version>
    </dependency>
    <dependency>
        <groupId>org.bytedeco.javacpp-presets</groupId>
        <artifactId>flycapture</artifactId>
        <version>2.7.3.13-0.10</version>
    </dependency>
    <dependency>
        <groupId>org.bytedeco.javacpp-presets</groupId>
        <artifactId>libdc1394</artifactId>
        <version>2.2.2-0.10</version>
    </dependency>
    <dependency>
        <groupId>org.bytedeco.javacpp-presets</groupId>
        <artifactId>libfreenect</artifactId>
        <version>0.5.1-0.10</version>
    </dependency>
    <dependency>
        <groupId>org.bytedeco.javacpp-presets</groupId>
        <artifactId>videoinput</artifactId>
        <version>0.200-0.10</version>
    </dependency>
    <dependency>
        <groupId>org.bytedeco.javacpp-presets</groupId>
        <artifactId>artoolkitplus</artifactId>
        <version>2.3.1-0.10</version>
    </dependency>
    <dependency>
        <groupId>org.bytedeco.javacpp-presets</groupId>
        <artifactId>flandmark</artifactId>
        <version>1.07-0.10</version>
    </dependency>
    <dependency>
        <groupId>org.bytedeco.javacpp-presets</groupId>
        <artifactId>fftw</artifactId>
        <version>3.3.4-0.10</version>
    </dependency>
    <dependency>
        <groupId>org.bytedeco.javacpp-presets</groupId>
        <artifactId>gsl</artifactId>
        <version>1.16-0.10</version>
    </dependency>
    <dependency>
        <groupId>org.bytedeco.javacpp-presets</groupId>
        <artifactId>llvm</artifactId>
        <version>3.5.0-0.10</version>
    </dependency>
    <dependency>
        <groupId>org.bytedeco.javacpp-presets</groupId>
        <artifactId>leptonica</artifactId>
        <version>1.71-0.10</version>
    </dependency>
    <dependency>
        <groupId>org.bytedeco.javacpp-presets</groupId>
        <artifactId>tesseract</artifactId>
        <version>3.03-rc1-0.10</version>
    </dependency>

并运行提到的代码here。我使用 FFmpegFrameGrabber 而不是 OpenCVFrameGra

我收到以下错误。

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(Class.java:274)
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:2249)
at org.bytedeco.javacv.FFmpegFrameGrabber.startUnsafe(FFmpegFrameGrabber.java:346)
at org.bytedeco.javacv.FFmpegFrameGrabber.start(FFmpegFrameGrabber.java:340)

有什么想法吗?我在使用 JDK 1.7 的 OS X Yosemite 上。

【问题讨论】:

  • 你设置platform.dependencies系统属性了吗?
  • 是的,在那之后它起作用了。谢谢。但这不会使我正在制作的应用程序依赖于平台吗?

标签: java maven opencv javacv


【解决方案1】:

正如 Samuel Audet 所说,使用“platform.dependencies”属性后,这个问题得到了解决。例如:

 $ mvn package exec:java -Dplatform.dependencies -Dexec.mainClass=Demo

【讨论】:

  • 请务必将此标记为答案!它帮助了我,谢谢。
  • 如果我使用 gradle(AndroidStudio) 怎么办?
猜你喜欢
  • 1970-01-01
  • 2023-03-30
  • 2021-09-10
  • 2018-08-01
  • 1970-01-01
  • 2015-10-20
  • 1970-01-01
  • 1970-01-01
  • 2014-02-03
相关资源
最近更新 更多