gpt4 book ai didi

java - 一起使用 JavaCV 和 Realm 会导致 "java.lang.UnsatisfiedLinkError"

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:36:49 28 4
gpt4 key购买 nike

我最近在尝试启动 JavaCV 的 FFmpegFrameGrabber 实例时遇到以下错误:

java.lang.UnsatisfiedLinkError: org.bytedeco.javacpp.avutil
at java.lang.Class.classForName(Native Method)
at java.lang.Class.forName(Class.java:324)
at org.bytedeco.javacpp.Loader.load(Loader.java:413)
at org.bytedeco.javacpp.Loader.load(Loader.java:381)
at org.bytedeco.javacpp.avformat$AVFormatContext.<clinit>(avformat.java:2597)
at org.bytedeco.javacv.FFmpegFrameGrabber.startUnsafe(FFmpegFrameGrabber.java:386)
at org.bytedeco.javacv.FFmpegFrameGrabber.start(FFmpegFrameGrabber.java:380)...

虽然存在解决此问题的方法,但没有一个对我有用。

通过多次试验我发现奇怪的是,如果我不在我的项目中包含 Realm,我将不再收到此错误。

这是我的 build.gradle 文件的一部分,其中包含所有这些库:

compile group: 'org.bytedeco', name: 'javacv', version: '1.1'
compile group: 'org.bytedeco.javacpp-presets', name: 'opencv', version: '3.0.0-1.1', classifier: 'android-arm'
compile group: 'org.bytedeco.javacpp-presets', name: 'opencv', version: '3.0.0-1.1', classifier: 'android-x86'
compile group: 'org.bytedeco.javacpp-presets', name: 'ffmpeg', version: '2.8.1-1.1', classifier: 'android-arm'
compile group: 'org.bytedeco.javacpp-presets', name: 'ffmpeg', version: '2.8.1-1.1', classifier: 'android-x86'

// ORM
compile 'io.realm:realm-android:0.87.2' // Tested NOT OK - Causes JavaCV to crash
//

我在想这个问题可能有一个我不知道的解决方案。我发现互联网上没有任何地方提到库不兼容或为什么会出现这种行为。

我将使用任何人可能需要的任何其他详细信息来编辑这篇文章。

如有任何帮助,我们将不胜感激。

编辑

我尝试应用描述的修复 here .现在我的包装选项看起来像这样:

packagingOptions {
exclude 'META-INF/LICENSE.txt'
exclude 'META-INF/NOTICE.txt'
exclude 'META-INF/maven/org.bytedeco.javacpp-presets/ffmpeg/pom.properties'
exclude 'META-INF/maven/org.bytedeco.javacpp-presets/ffmpeg/pom.xml'
exclude 'META-INF/maven/org.bytedeco.javacpp-presets/opencv/pom.properties'
exclude 'META-INF/maven/org.bytedeco.javacpp-presets/opencv/pom.xml'

exclude "lib/arm64-v8a/librealm-jni.so"
}

很遗憾,此更改没有效果。我仍然卡住了。

最佳答案

在我一位同事的帮助下,我已经能够解决这个问题。

除了问题中描述的步骤,我们:

  • 复制了 app/src/main/jniLibs/armeabiapp/src/main/jniLibs/armeabi-v7a 文件夹中的所有 .so 文件<
  • 已添加

    ndk{ abiFilters“armeabi-v7a”

    到模块的 build.gradle 文件的 defaultConfig 部分

  • 已添加

    lint选项{ abortOnError 错误

    到模块的 build.gradle 文件的 android 部分

如果可能的话,我会尽力向任何需要它们的人提供进一步的说明。

关于java - 一起使用 JavaCV 和 Realm 会导致 "java.lang.UnsatisfiedLinkError",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35066470/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com