Javacv: java.lang.UnsatisfiedLinkError: org.bytedeco.javacpp.avutil

Created on 27 Apr 2015  Â·  39Comments  Â·  Source: bytedeco/javacv

I'm using AndroidStudio1.2 on Mac and trying to get RecordActivity to work. I downloaded the bin.zip and added

compile files('libs/javacpp.jar')
compile files('libs/javacv.jar')
compile files('libs/ffmpeg.jar')
compile files('libs/ffmpeg-android-arm.jar')
compile files('libs/opencv.jar')
compile files('libs/opencv-android-arm.jar')

to my gradle file(already put related files under app/libs). But still ran into this error:

E/mm-camera(  325): cpp_hw_params_update_wnr_params:3088 Update WNR
E/AndroidRuntime( 9611): FATAL EXCEPTION: main
E/AndroidRuntime( 9611): java.lang.NoClassDefFoundError: java.lang.ClassNotFoundException: org.bytedeco.javacpp.avutil
E/AndroidRuntime( 9611):    at org.bytedeco.javacpp.Loader.load(Loader.java:388)
E/AndroidRuntime( 9611):    at org.bytedeco.javacpp.Loader.load(Loader.java:354)
E/AndroidRuntime( 9611):    at org.bytedeco.javacpp.avcodec$AVPacket.<clinit>(avcodec.java:1405)
E/AndroidRuntime( 9611):    at org.bytedeco.javacv.FFmpegFrameRecorder.<init>(FFmpegFrameRecorder.java:147)
E/AndroidRuntime( 9611):    at com.zbd.activities.RecordActivity.initRecorder(RecordActivity.java:269)
E/AndroidRuntime( 9611):    at com.zbd.activities.RecordActivity.startRecording(RecordActivity.java:284)
E/AndroidRuntime( 9611):    at com.zbd.activities.RecordActivity.onClick(RecordActivity.java:548)
E/AndroidRuntime( 9611):    at android.view.View.performClick(View.java:4475)
E/AndroidRuntime( 9611):    at android.view.View$PerformClick.run(View.java:18784)
E/AndroidRuntime( 9611):    at android.os.Handler.handleCallback(Handler.java:730)
E/AndroidRuntime( 9611):    at android.os.Handler.dispatchMessage(Handler.java:92)
E/AndroidRuntime( 9611):    at android.os.Looper.loop(Looper.java:137)
E/AndroidRuntime( 9611):    at android.app.ActivityThread.main(ActivityThread.java:5414)
E/AndroidRuntime( 9611):    at java.lang.reflect.Method.invokeNative(Native Method)
E/AndroidRuntime( 9611):    at java.lang.reflect.Method.invoke(Method.java:525)
E/AndroidRuntime( 9611):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1187)
E/AndroidRuntime( 9611):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1003)
E/AndroidRuntime( 9611):    at dalvik.system.NativeStart.main(Native Method)
E/AndroidRuntime( 9611): Caused by: java.lang.ClassNotFoundException: org.bytedeco.javacpp.avutil
E/AndroidRuntime( 9611):    at java.lang.Class.classForName(Native Method)
E/AndroidRuntime( 9611):    at java.lang.Class.forName(Class.java:204)
E/AndroidRuntime( 9611):    at org.bytedeco.javacpp.Loader.load(Loader.java:386)
E/AndroidRuntime( 9611):    ... 17 more
E/AndroidRuntime( 9611): Caused by: java.lang.NoClassDefFoundError: org/bytedeco/javacpp/avutil
E/AndroidRuntime( 9611):    ... 20 more
E/AndroidRuntime( 9611): Caused by: java.lang.ClassNotFoundException: Didn't find class "org.bytedeco.javacpp.avutil" on path: /data/app/com.zbd-1.apk
E/AndroidRuntime( 9611):    at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:65)
E/AndroidRuntime( 9611):    at java.lang.ClassLoader.loadClass(ClassLoader.java:501)
E/AndroidRuntime( 9611):    at java.lang.ClassLoader.loadClass(ClassLoader.java:461)
E/AndroidRuntime( 9611):    ... 20 more

Oddly enough, I can open the file in the editor. Anyone tell me how to fix this?

bug

All 39 comments

What happens if you follow the manual instructions here instead?
https://github.com/bytedeco/javacv#manual-installation

@saudet Hi Samuel. I tried downloading the bin files and adding them as dependencies, as the installation guide said, but still didn't work. Then I did some more search and extract opencv-android-arm.jar and ffmpeg-android-arm.jar and copy all the result .so files under app/src/main/jniLibs/armeabi-v7a/ and now it works.
Thank you!

Ok, please let me know the cause of the problem if you find it out! I would like to fix this issue. Thanks

@saudet According to the first answer of this question, It seems that if you already have an armeabi(or armeabi-v7a) folder in your project (in AndroidStudio, it's typically under app/src/main/jniLibs/ folder) that contains other .so files, then the .so files included in opencv-android-arm.jar and ffmpeg-android-arm.jar may not be imported into the project. That causes the ClassNotFoundException.

@saudet Before this issue is fixed, do you think it would be better to update the manual installation to tell users to try extracting .so files and put them under armeabi-v7a folders? Something like

If you're using AndroidStudio for Android development, and if you run into java.lang.ClassNotFoundException: org.bytedeco.javacpp.avutil, you can try extracting all the .so files in opencv-android-arm.jar and ffmpeg-android-arm.jar, and put them in your jni libs folder(typically app/src/main/jniLibs/armeabi-v7a).

This might save a lot of time for guys in the same situation as my.

I see, so this appears to be caused by a bug in Android Studio... Would you know of a better workaround? In any case, thanks for reporting and letting us know what the problem was! I'll update the README.md file if we cannot find a better solution.

I'm using AndroidStudio1.2 on Windows7(32bit). I have same problem. I did same workaround, but I had error (maybe same cause).
logcat is :

05-03 12:18:43.789  21945-21945/local.test.app1 W/dalvikvm﹕ Exception Ljava/lang/UnsatisfiedLinkError; thrown while initializing Lorg/bytedeco/javacpp/avutil;
05-03 12:18:43.839  21945-21945/local.test.app1 I/dalvikvm﹕ Rejecting re-init on previously-failed class Lorg/bytedeco/javacpp/avutil; v=0x0
05-03 12:18:43.839  21945-21945/local.test.app1 W/dalvikvm﹕ Exception Ljava/lang/NoClassDefFoundError; thrown while initializing Lorg/bytedeco/javacpp/avcodec$AVPacket;
05-03 12:18:43.839  21945-21945/local.test.app1 D/AndroidRuntime﹕ Shutting down VM
05-03 12:18:43.839  21945-21945/local.test.app1 W/dalvikvm﹕ threadid=1: thread exiting with uncaught exception (group=0xb3cb3b20)
05-03 12:18:43.879  21945-21945/local.test.app1 D/dalvikvm﹕ GC_FOR_ALLOC freed 389K, 11% free 3728K/4184K, paused 33ms, total 34ms
05-03 12:18:43.879  21945-21945/local.test.app1 E/AndroidRuntime﹕ FATAL EXCEPTION: main
    Process: local.test.app1, PID: 21945
    java.lang.IllegalStateException: Could not execute method of the activity
            at android.view.View$1.onClick(View.java:3823)
            at android.view.View.performClick(View.java:4438)
            at android.view.View$PerformClick.run(View.java:18422)
            at android.os.Handler.handleCallback(Handler.java:733)
            at android.os.Handler.dispatchMessage(Handler.java:95)
            at android.os.Looper.loop(Looper.java:136)
            at android.app.ActivityThread.main(ActivityThread.java:5017)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:515)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
            at dalvik.system.NativeStart.main(Native Method)
     Caused by: java.lang.reflect.InvocationTargetException
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:515)
            at android.view.View$1.onClick(View.java:3818)
            at android.view.View.performClick(View.java:4438)
            at android.view.View$PerformClick.run(View.java:18422)
            at android.os.Handler.handleCallback(Handler.java:733)
            at android.os.Handler.dispatchMessage(Handler.java:95)
            at android.os.Looper.loop(Looper.java:136)
            at android.app.ActivityThread.main(ActivityThread.java:5017)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:515)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
            at dalvik.system.NativeStart.main(Native Method)
     Caused by: java.lang.NoClassDefFoundError: java.lang.ClassNotFoundException: org.bytedeco.javacpp.avutil
            at org.bytedeco.javacpp.Loader.load(Loader.java:388)
            at org.bytedeco.javacpp.Loader.load(Loader.java:354)
            at org.bytedeco.javacpp.avcodec$AVPacket.<clinit>(avcodec.java:1405)
            at org.bytedeco.javacv.FFmpegFrameRecorder.<init>(FFmpegFrameRecorder.java:147)
            at local.test.app1.TestActivity.initRecorder(TestActivity.java:856)
            at local.test.app1.TestActivity.startRecording(TestActivity.java:523)
            at local.test.app1.TestActivity.onControlClick(TestActivity.java:594)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:515)
            at android.view.View$1.onClick(View.java:3818)
            at android.view.View.performClick(View.java:4438)
            at android.view.View$PerformClick.run(View.java:18422)
            at android.os.Handler.handleCallback(Handler.java:733)
            at android.os.Handler.dispatchMessage(Handler.java:95)
            at android.os.Looper.loop(Looper.java:136)
            at android.app.ActivityThread.main(ActivityThread.java:5017)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:515)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
            at dalvik.system.NativeStart.main(Native Method)
     Caused by: java.lang.ClassNotFoundException: org.bytedeco.javacpp.avutil
            at java.lang.Class.classForName(Native Method)
            at java.lang.Class.forName(Class.java:251)
            at org.bytedeco.javacpp.Loader.load(Loader.java:386)
            at org.bytedeco.javacpp.Loader.load(Loader.java:354)
            at org.bytedeco.javacpp.avcodec$AVPacket.<clinit>(avcodec.java:1405)
            at org.bytedeco.javacv.FFmpegFrameRecorder.<init>(FFmpegFrameRecorder.java:147)
            at local.test.app1.TestActivity.initRecorder(TestActivity.java:856)
            at local.test.app1.TestActivity.startRecording(TestActivity.java:523)
            at local.test.app1.TestActivity.onControlClick(TestActivity.java:594)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:515)
            at android.view.View$1.onClick(View.java:3818)
            at android.view.View.performClick(View.java:4438)
            at android.view.View$PerformClick.run(View.java:18422)
            at android.os.Handler.handleCallback(Handler.java:733)
            at android.os.Handler.dispatchMessage(Handler.java:95)
            at android.os.Looper.loop(Looper.java:136)
            at android.app.ActivityThread.main(ActivityThread.java:5017)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:515)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
            at dalvik.system.NativeStart.main(Native Method)
     Caused by: java.lang.NoClassDefFoundError: org/bytedeco/javacpp/avutil
            at java.lang.Class.classForName(Native Method)
            at java.lang.Class.forName(Class.java:251)
            at org.bytedeco.javacpp.Loader.load(Loader.java:386)
            at org.bytedeco.javacpp.Loader.load(Loader.java:354)
            at org.bytedeco.javacpp.avcodec$AVPacket.<clinit>(avcodec.java:1405)
            at org.bytedeco.javacv.FFmpegFrameRecorder.<init>(FFmpegFrameRecorder.java:147)
            at local.test.app1.TestActivity.initRecorder(TestActivity.java:856)
            at local.test.app1.TestActivity.startRecording(TestActivity.java:523)
            at local.test.app1.TestActivity.onControlClick(TestActivity.java:594)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:515)
            at android.view.View$1.onClick(View.java:3818)
            at android.view.View.performClick(View.java:4438)
            at android.view.View$PerformClick.run(View.java:18422)
            at android.os.Handler.handleCallback(Handler.java:733)
            at android.os.Handler.dispatchMessage(Handler.java:95)
            at android.os.Looper.loop(Looper.java:136)
            at android.app.ActivityThread.main(ActivityThread.java:5017)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:515)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
            at dalvik.system.NativeStart.main(Native Method)
     Caused by: java.lang.ClassNotFoundException: Didn't find class "org.bytedeco.javacpp.avutil" on path: DexPathList[[zip file "/data/app/local.test.app1-2.apk"],nativeLibraryDirectories=[/data/app-lib/local.test.app1-2, /system/lib]]
            at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
            at java.lang.ClassLoader.loadClass(ClassLoader.java:497)
            at java.lang.ClassLoader.loadClass(ClassLoader.java:457)
            at java.lang.Class.classForName(Native Method)
            at java.lang.Class.forName(Class.java:251)
            at org.bytedeco.javacpp.Loader.load(Loader.java:386)
            at org.bytedeco.javacpp.Loader.load(Loader.java:354)
            at org.bytedeco.javacpp.avcodec$AVPacket.<clinit>(avcodec.java:1405)
            at org.bytedeco.javacv.FFmpegFrameRecorder.<init>(FFmpegFrameRecorder.java:147)
            at local.test.app1.TestActivity.initRecorder(TestActivity.java:856)
            at local.test.app1.TestActivity.startRecording(TestActivity.java:523)
            at local.test.app1.TestActivity.onControlClick(TestActivity.java:594)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:515)
            at android.view.View$1.onClick(View.java:3818)
            at android.view.View.performClick(View.java:4438)
            at android.view.View$PerformClick.run(View.java:18422)
            at android.os.Handler.handleCallback(Handler.java:733)
            at android.os.Handler.dispatchMessage(Handler.java:95)
            at android.os.Looper.loop(Looper.java:136)
            at android.app.ActivityThread.main(ActivityThread.java:5017)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:515)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
            at dalvik.system.NativeStart.main(Native Method)

I built java by using Maven central, I had same error.
My build.gradle is:

compile group: 'org.bytedeco', name: 'javacv', version: '0.11'
compile group: 'org.bytedeco.javacpp-presets', name: 'opencv', version: '2.4.11-0.11', classifier: 'android-arm'
compile group: 'org.bytedeco.javacpp-presets', name: 'ffmpeg', version: '2.6.1-0.11', classifier: 'android-arm'

I spent two days...
help me.

@nskr Could also provide any messages you get about “avutil“ in Android's log? Thanks!

I also edited build.gradle like this:

sourceSets {
        main {
            jniLibs.srcDir 'src/main/jniLibs'
        }
}

folder structure is:

src/main/jniLibs
 armeabi/*.so
   or
 armeabi-v7a/*.so

I found *.so files in my app's apk file:

 <APK root>/lib/ 
 armeabi/*.so
   or
 armeabi-v7a/*.so

But, it still does not work.

thanks for your reply.

@nskr Well, your device might be x86, so it would help if you could provide the information given in your Android log, thanks.

OK, I'll try again to use x86 folder.

It worked!

My build.gradle is:

compile group: 'org.bytedeco', name: 'javacv', version: '0.11'
compile group: 'org.bytedeco.javacpp-presets', name: 'opencv', version: '2.4.11-0.11', classifier: 'android-x86'
compile group: 'org.bytedeco.javacpp-presets', name: 'ffmpeg', version: '2.6.1-0.11', classifier: 'android-x86'

Thanks

Ok so I found a solution that works on both x86 and arm:

Proguard settings:

-keep @org.bytedeco.javacpp.annotation interface * {
    *;
}

-keep @org.bytedeco.javacpp.annotation.Platform public class *

-keepclasseswithmembernames class * {
    @org.bytedeco.* <fields>;
}

-keepclasseswithmembernames class * {
    @org.bytedeco.* <methods>;
}

-keepattributes EnclosingMethod
-keep @interface org.bytedeco.javacpp.annotation.*,javax.inject.*

-keepattributes *Annotation*, Exceptions, Signature, Deprecated, SourceFile, SourceDir, LineNumberTable, LocalVariableTable, LocalVariableTypeTable, Synthetic, EnclosingMethod, RuntimeVisibleAnnotations, RuntimeInvisibleAnnotations, RuntimeVisibleParameterAnnotations, RuntimeInvisibleParameterAnnotations, AnnotationDefault, InnerClasses
-keep class org.bytedeco.javacpp.** {*;}
-dontwarn java.awt.**
-dontwarn org.bytedeco.javacv.**
-dontwarn org.bytedeco.javacpp.**

Build.gradle:

compile group: 'org.bytedeco', name: 'javacv', version: '0.11'
compile group: 'org.bytedeco.javacpp-presets', name: 'opencv', version: '2.4.11-0.11', classifier: 'android-arm'
compile group: 'org.bytedeco.javacpp-presets', name: 'opencv', version: '2.4.11-0.11', classifier: 'android-x86'
compile group: 'org.bytedeco.javacpp-presets', name: 'ffmpeg', version: '2.6.1-0.11', classifier: 'android-arm'
compile group: 'org.bytedeco.javacpp-presets', name: 'ffmpeg', version: '2.6.1-0.11', classifier: 'android-x86'

This is based on my SO question: http://stackoverflow.com/questions/30078380/proguard-removing-annotations-in-android-application/30130559#30130559

Note that there may a few proguard rules redundant, but at least it works.

Note that I ran this with proguard 5.1, AS currently has 4.7 which apparently also has issues with annotations.

@lfdversluis Please post anything else you find about ProGuard here: https://github.com/bytedeco/javacv/issues/79
Or open a new issue to summarize everything more clearly.Thanks!

And what happens if you simply add the JAR files instead?

i have the same issue ,but my device is arm, spent too much time on it, please help,

11-18 11:44:55.300 22131-22131/org.bytedeco.javacv_android_example D/dalvikvm: No JNI_OnLoad found in /system/lib/libc.so 0x41372aa8, skipping init
11-18 11:44:55.300 22131-22131/org.bytedeco.javacv_android_example D/dalvikvm: No JNI_OnLoad found in /system/lib/libm.so 0x41372aa8, skipping init
11-18 11:44:55.300 22131-22131/org.bytedeco.javacv_android_example D/dalvikvm: No JNI_OnLoad found in /system/lib/libz.so 0x41372aa8, skipping init
11-18 11:44:55.310 22131-22131/org.bytedeco.javacv_android_example D/dalvikvm: No JNI_OnLoad found in /system/lib/libdl.so 0x41372aa8, skipping init
11-18 11:44:55.310 22131-22131/org.bytedeco.javacv_android_example D/dalvikvm: No JNI_OnLoad found in /system/lib/liblog.so 0x41372aa8, skipping init
11-18 11:44:55.310 22131-22131/org.bytedeco.javacv_android_example D/dalvikvm: Trying to load lib /data/data/org.bytedeco.javacv_android_example/lib/libavutil.so 0x41372aa8
11-18 11:44:55.310 22131-22131/org.bytedeco.javacv_android_example D/dalvikvm: Added shared lib /data/data/org.bytedeco.javacv_android_example/lib/libavutil.so 0x41372aa8
11-18 11:44:55.310 22131-22131/org.bytedeco.javacv_android_example D/dalvikvm: No JNI_OnLoad found in /data/data/org.bytedeco.javacv_android_example/lib/libavutil.so 0x41372aa8, skipping init
11-18 11:44:55.320 22131-22131/org.bytedeco.javacv_android_example D/dalvikvm: Trying to load lib /data/data/org.bytedeco.javacv_android_example/lib/libjniavutil.so 0x41372aa8
11-18 11:44:55.320 22131-22131/org.bytedeco.javacv_android_example W/dalvikvm: Exception Ljava/lang/UnsatisfiedLinkError; thrown while initializing Lorg/bytedeco/javacpp/avutil;
11-18 11:44:55.390 22131-22131/org.bytedeco.javacv_android_example I/dalvikvm: Rejecting re-init on previously-failed class Lorg/bytedeco/javacpp/avutil; v=0x0
11-18 11:44:55.390 22131-22131/org.bytedeco.javacv_android_example W/dalvikvm: Exception Ljava/lang/NoClassDefFoundError; thrown while initializing Lorg/bytedeco/javacpp/avcodec$AVPacket;
11-18 11:44:55.390 22131-22131/org.bytedeco.javacv_android_example D/AndroidRuntime: Shutting down VM
11-18 11:44:55.390 22131-22131/org.bytedeco.javacv_android_example W/dalvikvm: threadid=1: thread exiting with uncaught exception (group=0x40a5e1f8)
11-18 11:44:55.410 22131-22131/org.bytedeco.javacv_android_example E/AndroidRuntime: FATAL EXCEPTION: main
11-18 11:44:55.410 22131-22131/org.bytedeco.javacv_android_example E/AndroidRuntime: java.lang.ExceptionInInitializerError
11-18 11:44:55.410 22131-22131/org.bytedeco.javacv_android_example E/AndroidRuntime:     at org.bytedeco.javacv.FFmpegFrameRecorder.<init>(FFmpegFrameRecorder.java:149)
11-18 11:44:55.410 22131-22131/org.bytedeco.javacv_android_example E/AndroidRuntime:     at org.bytedeco.javacv.FFmpegFrameRecorder.<init>(FFmpegFrameRecorder.java:129)
11-18 11:44:55.410 22131-22131/org.bytedeco.javacv_android_example E/AndroidRuntime:     at org.bytedeco.javacv_android_example.record.RecordActivity.initRecorder(RecordActivity.java:216)
11-18 11:44:55.410 22131-22131/org.bytedeco.javacv_android_example E/AndroidRuntime:     at org.bytedeco.javacv_android_example.record.RecordActivity.startRecording(RecordActivity.java:230)
11-18 11:44:55.410 22131-22131/org.bytedeco.javacv_android_example E/AndroidRuntime:     at org.bytedeco.javacv_android_example.record.RecordActivity.onClick(RecordActivity.java:312)
11-18 11:44:55.410 22131-22131/org.bytedeco.javacv_android_example E/AndroidRuntime:     at android.view.View.performClick(View.java:3511)
11-18 11:44:55.410 22131-22131/org.bytedeco.javacv_android_example E/AndroidRuntime:     at android.view.View$PerformClick.run(View.java:14110)
11-18 11:44:55.410 22131-22131/org.bytedeco.javacv_android_example E/AndroidRuntime:     at android.os.Handler.handleCallback(Handler.java:605)
11-18 11:44:55.410 22131-22131/org.bytedeco.javacv_android_example E/AndroidRuntime:     at android.os.Handler.dispatchMessage(Handler.java:92)
11-18 11:44:55.410 22131-22131/org.bytedeco.javacv_android_example E/AndroidRuntime:     at android.os.Looper.loop(Looper.java:137)
11-18 11:44:55.410 22131-22131/org.bytedeco.javacv_android_example E/AndroidRuntime:     at android.app.ActivityThread.main(ActivityThread.java:4426)
11-18 11:44:55.410 22131-22131/org.bytedeco.javacv_android_example E/AndroidRuntime:     at java.lang.reflect.Method.invokeNative(Native Method)
11-18 11:44:55.410 22131-22131/org.bytedeco.javacv_android_example E/AndroidRuntime:     at java.lang.reflect.Method.invoke(Method.java:511)
11-18 11:44:55.410 22131-22131/org.bytedeco.javacv_android_example E/AndroidRuntime:     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:788)
11-18 11:44:55.410 22131-22131/org.bytedeco.javacv_android_example E/AndroidRuntime:     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:555)
11-18 11:44:55.410 22131-22131/org.bytedeco.javacv_android_example E/AndroidRuntime:     at dalvik.system.NativeStart.main(Native Method)
11-18 11:44:55.410 22131-22131/org.bytedeco.javacv_android_example E/AndroidRuntime:  Caused by: java.lang.NoClassDefFoundError: java.lang.ClassNotFoundException: org.bytedeco.javacpp.avutil
11-18 11:44:55.410 22131-22131/org.bytedeco.javacv_android_example E/AndroidRuntime:     at org.bytedeco.javacpp.Loader.load(Loader.java:392)
11-18 11:44:55.410 22131-22131/org.bytedeco.javacv_android_example E/AndroidRuntime:     at org.bytedeco.javacpp.Loader.load(Loader.java:358)
11-18 11:44:55.410 22131-22131/org.bytedeco.javacv_android_example E/AndroidRuntime:     at org.bytedeco.javacpp.avcodec$AVPacket.<clinit>(avcodec.java:1407)
11-18 11:44:55.410 22131-22131/org.bytedeco.javacv_android_example E/AndroidRuntime:     at org.bytedeco.javacv.FFmpegFrameRecorder.<init>(FFmpegFrameRecorder.java:149) 
11-18 11:44:55.410 22131-22131/org.bytedeco.javacv_android_example E/AndroidRuntime:     at org.bytedeco.javacv.FFmpegFrameRecorder.<init>(FFmpegFrameRecorder.java:129) 
11-18 11:44:55.410 22131-22131/org.bytedeco.javacv_android_example E/AndroidRuntime:     at org.bytedeco.javacv_android_example.record.RecordActivity.initRecorder(RecordActivity.java:216) 
11-18 11:44:55.410 22131-22131/org.bytedeco.javacv_android_example E/AndroidRuntime:     at org.bytedeco.javacv_android_example.record.RecordActivity.startRecording(RecordActivity.java:230) 
11-18 11:44:55.410 22131-22131/org.bytedeco.javacv_android_example E/AndroidRuntime:     at org.bytedeco.javacv_android_example.record.RecordActivity.onClick(RecordActivity.java:312) 
11-18 11:44:55.410 22131-22131/org.bytedeco.javacv_android_example E/AndroidRuntime:     at android.view.View.performClick(View.java:3511) 
11-18 11:44:55.410 22131-22131/org.bytedeco.javacv_android_example E/AndroidRuntime:     at android.view.View$PerformClick.run(View.java:14110) 
11-18 11:44:55.410 22131-22131/org.bytedeco.javacv_android_example E/AndroidRuntime:     at android.os.Handler.handleCallback(Handler.java:605) 
11-18 11:44:55.410 22131-22131/org.bytedeco.javacv_android_example E/AndroidRuntime:     at android.os.Handler.dispatchMessage(Handler.java:92) 
11-18 11:44:55.410 22131-22131/org.bytedeco.javacv_android_example E/AndroidRuntime:     at android.os.Looper.loop(Looper.java:137) 
11-18 11:44:55.410 22131-22131/org.bytedeco.javacv_android_example E/AndroidRuntime:     at android.app.ActivityThread.main(ActivityThread.java:4426) 
11-18 11:44:55.410 22131-22131/org.bytedeco.javacv_android_example E/AndroidRuntime:     at java.lang.reflect.Method.invokeNative(Native Method) 
11-18 11:44:55.410 22131-22131/org.bytedeco.javacv_android_example E/AndroidRuntime:     at java.lang.reflect.Method.invoke(Method.java:511) 
11-18 11:44:55.410 22131-22131/org.bytedeco.javacv_android_example E/AndroidRuntime:     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:788) 
11-18 11:44:55.410 22131-22131/org.bytedeco.javacv_android_example E/AndroidRuntime:     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:555) 
11-18 11:44:55.410 22131-22131/org.bytedeco.javacv_android_example E/AndroidRuntime:     at dalvik.system.NativeStart.main(Native Method) 
11-18 11:44:55.410 22131-22131/org.bytedeco.javacv_android_example E/AndroidRuntime:  Caused by: java.lang.ClassNotFoundException: org.bytedeco.javacpp.avutil
11-18 11:44:55.410 22131-22131/org.bytedeco.javacv_android_example E/AndroidRuntime:     at java.lang.Class.classForName(Native Method)
11-18 11:44:55.410 22131-22131/org.bytedeco.javacv_android_example E/AndroidRuntime:     at java.lang.Class.forName(Class.java:217)
11-18 11:44:55.410 22131-22131/org.bytedeco.javacv_android_example E/AndroidRuntime:     at org.bytedeco.javacpp.Loader.load(Loader.java:390)
11-18 11:44:55.410 22131-22131/org.bytedeco.javacv_android_example E/AndroidRuntime:     at org.bytedeco.javacpp.Loader.load(Loader.java:358) 
11-18 11:44:55.410 22131-22131/org.bytedeco.javacv_android_example E/AndroidRuntime:     at org.bytedeco.javacpp.avcodec$AVPacket.<clinit>(avcodec.java:1407) 
11-18 11:44:55.410 22131-22131/org.bytedeco.javacv_android_example E/AndroidRuntime:     at org.bytedeco.javacv.FFmpegFrameRecorder.<init>(FFmpegFrameRecorder.java:149) 
11-18 11:44:55.410 22131-22131/org.bytedeco.javacv_android_example E/AndroidRuntime:     at org.bytedeco.javacv.FFmpegFrameRecorder.<init>(FFmpegFrameRecorder.java:129) 
11-18 11:44:55.410 22131-22131/org.bytedeco.javacv_android_example E/AndroidRuntime:     at org.bytedeco.javacv_android_example.record.RecordActivity.initRecorder(RecordActivity.java:216) 
11-18 11:44:55.410 22131-22131/org.bytedeco.javacv_android_example E/AndroidRuntime:     at org.bytedeco.javacv_android_example.record.RecordActivity.startRecording(RecordActivity.java:230) 
11-18 11:44:55.410 22131-22131/org.bytedeco.javacv_android_example E/AndroidRuntime:     at org.bytedeco.javacv_android_example.record.RecordActivity.onClick(RecordActivity.java:312) 
11-18 11:44:55.410 22131-22131/org.bytedeco.javacv_android_example E/AndroidRuntime:     at android.view.View.performClick(View.java:3511) 
11-18 11:44:55.410 22131-22131/org.bytedeco.javacv_android_example E/AndroidRuntime:     at android.view.View$PerformClick.run(View.java:14110) 
11-18 11:44:55.410 22131-22131/org.bytedeco.javacv_android_example E/AndroidRuntime:     at android.os.Handler.handleCallback(Handler.java:605) 
11-18 11:44:55.410 22131-22131/org.bytedeco.javacv_android_example E/AndroidRuntime:     at android.os.Handler.dispatchMessage(Handler.java:92) 
11-18 11:44:55.410 22131-22131/org.bytedeco.javacv_android_example E/AndroidRuntime:     at android.os.Looper.loop(Looper.java:137) 
11-18 11:44:55.410 22131-22131/org.bytedeco.javacv_android_example E/AndroidRuntime:     at android.app.ActivityThread.main(ActivityThread.java:4426) 
11-18 11:44:55.410 22131-22131/org.bytedeco.javacv_android_example E/AndroidRuntime:     at java.lang.reflect.Method.invokeNative(Native Method) 
11-18 11:44:55.410 22131-22131/org.bytedeco.javacv_android_example E/AndroidRuntime:     at java.lang.reflect.Method.invoke(Method.java:511) 
11-18 11:44:55.410 22131-22131/org.bytedeco.javacv_android_example E/AndroidRuntime:     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:788) 
11-18 11:44:55.410 22131-22131/org.bytedeco.javacv_android_example E/AndroidRuntime:     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:555) 
11-18 11:44:55.410 22131-22131/org.bytedeco.javacv_android_example E/AndroidRuntime:     at dalvik.system.NativeStart.main(Native Method) 
11-18 11:44:55.410 22131-22131/org.bytedeco.javacv_android_example E/AndroidRuntime:  Caused by: java.lang.NoClassDefFoundError: org/bytedeco/javacpp/avutil
11-18 11:44:55.410 22131-22131/org.bytedeco.javacv_android_example E/AndroidRuntime:     at java.lang.Class.classForName(Native Method) 
11-18 11:44:55.410 22131-22131/org.bytedeco.javacv_android_example E/AndroidRuntime:     at java.lang.Class.forName(Class.java:217) 
11-18 11:44:55.410 22131-22131/org.bytedeco.javacv_android_example E/AndroidRuntime:     at org.bytedeco.javacpp.Loader.load(Loader.java:390) 
11-18 11:44:55.410 22131-22131/org.bytedeco.javacv_android_example E/AndroidRuntime:     at org.bytedeco.javacpp.Loader.load(Loader.java:358) 
11-18 11:44:55.410 22131-22131/org.bytedeco.javacv_android_example E/AndroidRuntime:     at org.bytedeco.javacpp.avcodec$AVPacket.<clinit>(avcodec.java:1407) 
11-18 11:44:55.410 22131-22131/org.bytedeco.javacv_android_example E/AndroidRuntime:     at org.bytedeco.javacv.FFmpegFrameRecorder.<init>(FFmpegFrameRecorder.java:149) 
11-18 11:44:55.410 22131-22131/org.bytedeco.javacv_android_example E/AndroidRuntime:     at org.bytedeco.javacv.FFmpegFrameRecorder.<init>(FFmpegFrameRecorder.java:129) 
11-18 11:44:55.410 22131-22131/org.bytedeco.javacv_android_example E/AndroidRuntime:     at org.bytedeco.javacv_android_example.record.RecordActivity.initRecorder(RecordActivity.java:216) 
11-18 11:44:55.410 22131-22131/org.bytedeco.javacv_android_example E/AndroidRuntime:     at org.bytedeco.javacv_android_example.record.RecordActivity.startRecording(RecordActivity.java:230) 
11-18 11:44:55.410 22131-22131/org.bytedeco.javacv_android_example E/AndroidRuntime:     at org.bytedeco.javacv_android_example.record.RecordActivity.onClick(RecordActivity.java:312) 
11-18 11:44:55.410 22131-22131/org.bytedeco.javacv_android_example E/AndroidRuntime:     at android.view.View.performClick(View.java:3511) 
11-18 11:44:55.410 22131-22131/org.bytedeco.javacv_android_example E/AndroidRuntime:     at android.view.View$PerformClick.run(View.java:14110) 
11-18 11:44:55.410 22131-22131/org.bytedeco.javacv_android_example E/AndroidRuntime:     at android.os.Handler.handleCallback(Handler.java:605) 
11-18 11:44:55.410 22131-22131/org.bytedeco.javacv_android_example E/AndroidRuntime:     at android.os.Handler.dispatchMessage(Handler.java:92) 
11-18 11:44:55.410 22131-22131/org.bytedeco.javacv_android_example E/AndroidRuntime:     at android.os.Looper.loop(Looper.java:137) 
11-18 11:44:55.410 22131-22131/org.bytedeco.javacv_android_example E/AndroidRuntime:     at android.app.ActivityThread.main(ActivityThread.java:4426) 
11-18 11:44:55.410 22131-22131/org.bytedeco.javacv_android_example E/AndroidRuntime:     at java.lang.reflect.Method.invokeNative(Native Method) 
11-18 11:44:55.410 22131-22131/org.bytedeco.javacv_android_example E/AndroidRuntime:     at java.lang.reflect.Method.invoke(Method.java:511) 
11-18 11:44:55.410 22131-22131/org.bytedeco.javacv_android_example E/AndroidRuntime:     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:788) 
11-18 11:44:55.410 22131-22131/org.bytedeco.javacv_android_example E/AndroidRuntime:     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:555) 
11-18 11:44:55.410 22131-22131/org.bytedeco.javacv_android_example E/AndroidRuntime:     at dalvik.system.NativeStart.main(Native Method) 
11-18 11:44:55.410 22131-22131/org.bytedeco.javacv_android_example E/AndroidRuntime:  Caused by: java.lang.ClassNotFoundException: org.bytedeco.javacpp.avutil
11-18 11:44:55.410 22131-22131/org.bytedeco.javacv_android_example E/AndroidRuntime:     at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:61)
11-18 11:44:55.410 22131-22131/org.bytedeco.javacv_android_example E/AndroidRuntime:     at java.lang.ClassLoader.loadClass(ClassLoader.java:501)
11-18 11:44:55.410 22131-22131/org.bytedeco.javacv_android_example E/AndroidRuntime:     at java.lang.ClassLoader.loadClass(ClassLoader.java:461)
11-18 11:44:55.410 22131-22131/org.bytedeco.javacv_android_example E/AndroidRuntime:     at java.lang.Class.classForName(Native Method) 
11-18 11:44:55.410 22131-22131/org.bytedeco.javacv_android_example E/AndroidRuntime:     at java.lang.Class.forName(Class.java:217) 
11-18 11:44:55.410 22131-22131/org.bytedeco.javacv_android_example E/AndroidRuntime:     at org.bytedeco.javacpp.Loader.load(Loader.java:390) 
11-18 11:44:55.410 22131-22131/org.bytedeco.javacv_android_example E/AndroidRuntime:     at org.bytedeco.javacpp.Loader.load(Loader.java:358) 
11-18 11:44:55.410 22131-22131/org.bytedeco.javacv_android_example E/AndroidRuntime:     at org.bytedeco.javacpp.avcodec$AVPacket.<clinit>(avcodec.java:1407) 
11-18 11:44:55.410 22131-22131/org.bytedeco.javacv_android_example E/AndroidRuntime:     at org.bytedeco.javacv.FFmpegFrameRecorder.<init>(FFmpegFrameRecorder.java:149) 
11-18 11:44:55.410 22131-22131/org.bytedeco.javacv_android_example E/AndroidRuntime:     at org.bytedeco.javacv.FFmpegFrameRecorder.<init>(FFmpegFrameRecorder.java:129) 
11-18 11:44:55.410 22131-22131/org.bytedeco.javacv_android_example E/AndroidRuntime:     at org.bytedeco.javacv_android_example.record.RecordActivity.initRecorder(RecordActivity.java:216) 
11-18 11:44:55.410 22131-22131/org.bytedeco.javacv_android_example E/AndroidRuntime:     at org.bytedeco.javacv_android_example.record.RecordActivity.startRecording(RecordActivity.java:230) 
11-18 11:44:55.410 22131-22131/org.bytedeco.javacv_android_example E/AndroidRuntime:     at org.bytedeco.javacv_android_example.record.RecordActivity.onClick(RecordActivity.java:312) 
11-18 11:44:55.410 22131-22131/org.bytedeco.javacv_android_example E/AndroidRuntime:     at android.view.View.performClick(View.java:3511) 
11-18 11:44:55.410 22131-22131/org.bytedeco.javacv_android_example E/AndroidRuntime:     at android.view.View$PerformClick.run(View.java:14110) 
11-18 11:44:55.410 22131-22131/org.bytedeco.javacv_android_example E/AndroidRuntime:     at android.os.Handler.handleCallback(Handler.java:605) 
11-18 11:44:55.410 22131-22131/org.bytedeco.javacv_android_example E/AndroidRuntime:     at android.os.Handler.dispatchMessage(Handler.java:92) 
11-18 11:44:55.410 22131-22131/org.bytedeco.javacv_android_example E/AndroidRuntime:     at android.os.Looper.loop(Looper.java:137) 
11-18 11:44:55.410 22131-22131/org.bytedeco.javacv_android_example E/AndroidRuntime:     at android.app.ActivityThread.main(ActivityThread.java:4426) 
11-18 11:44:55.410 22131-22131/org.bytedeco.javacv_android_example E/AndroidRuntime:     at java.lang.reflect.Method.invokeNative(Native Method) 
11-18 11:44:55.410 22131-22131/org.bytedeco.javacv_android_example E/AndroidRuntime:     at java.lang.reflect.Method.invoke(Method.java:511) 
11-18 11:44:55.410 22131-22131/org.bytedeco.javacv_android_example E/AndroidRuntime:     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:788) 
11-18 11:44:55.410 22131-22131/org.bytedeco.javacv_android_example E/AndroidRuntime:     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:555) 
11-18 11:44:55.410 22131-22131/org.bytedeco.javacv_android_example E/AndroidRuntime:     at dalvik.system.NativeStart.main(Native Method) 

btw, i use the sample project of javacv-android-example, on android 5.0 is ok, but on 4.0.3 shows the error

@zouyongdang thank you so much. i fixed. i extracted "jar xf opencv-android-arm.jar" and "ffmpeg-android-arm.jar" after than i moved *.so files to "app/src/main/jniLibs/armeabi-v7a" folder and it worked for me.

The issue ( https://github.com/bytedeco/javacv/issues/319) links an answer here (http://stackoverflow.com/questions/35066470/using-javacv-and-realm-together-causes-java-lang-unsatisfiedlinkerror/35088655#35088655)

when i try to add a line "ndk { abiFilters "armeabi-v7a" }" in defaultConfig. Android studio give me an error "Error:(13, 0) Error: NDK integration is deprecated in the current plugin. Consider trying the new experimental plugin. For details, see http://tools.android.com/tech-docs/new-build-system/gradle-experimental. Set "android.useDeprecatedNdk=true" in gradle.properties to continue using the current NDK integration.
Open File"

Can any one tell how to add these two line in detail...

I solve the problem here just use a lower sdk verison 18 to run mu code .Getting stuck Many Days just because of SDK verison!!!

I am getting this error on the Nexus 5x running Marshmallow. However, everything is working fine on my Nexus 5 running Marshmallow, HTC One m8 running Lollipop, and Galaxy Nexus running Jellybean. Any ideas on what would be causing this??

I copied the .so files to the armeabi and armeabi-v7a folders, and placed the javacv, javacpp, opencv, and ffmpeg jars in my libs folder. I have tried every other installation method, but this way seems to have the best results.

Thanks @saudet. I'm not really sure what I'm supposed to do with that though. I'm not calling System.loadLibrary anywhere in my app. Should I be?

JavaCPP calls it, but it can't do much good if your device decides not to install one of the libraries.

I found a similar thread, issue 319 and the solution given there has maybe fixed my problem. The solution is here. I am no longer getting the error on my Nexus 5x, and everything seems to be working on all of my other devices as well.

Sorry, I didn't realize @saudet closed my issue just minutes before my submit so I'll just continue here instead.

New update,

After upgrading ProGuard as instructed here and getting everything installed with gradle using:
compile group: 'org.bytedeco', name: 'javacv', version: '1.1'

And using ReLinker to load relevant libraries:

        ReLinker.loadLibrary(this, "ffmpeg-2.8.1-1.1");
        ReLinker.loadLibrary(this, "javacpp-1.1");
        ReLinker.loadLibrary(this, "javacv-1.1");

I'm getting this:

FATAL EXCEPTION: main
    Process: com.example.viet.myappdemo, PID: 23217
    com.getkeepsafe.relinker.MissingLibraryException: lib/armeabi/libffmpeg-2.8.1-1.1.so
        at com.getkeepsafe.relinker.ApkLibraryInstaller.installLibrary(ApkLibraryInstaller.java:85)
        at com.getkeepsafe.relinker.ReLinkerInstance.loadLibraryInternal(ReLinkerInstance.java:182)
        at com.getkeepsafe.relinker.ReLinkerInstance.loadLibrary(ReLinkerInstance.java:140)
        at com.getkeepsafe.relinker.ReLinker.loadLibrary(ReLinker.java:70)
        at com.getkeepsafe.relinker.ReLinker.loadLibrary(ReLinker.java:51)
        at com.example.viet.myappdemo.VideoActivity.getFrame(VideoActivity.java:279)
        at com.example.viet.myappdemo.VideoActivity.access$100(VideoActivity.java:44)
        at com.example.viet.myappdemo.VideoActivity$2.run(VideoActivity.java:246)
        at android.os.Handler.handleCallback(Handler.java:739)
        at android.os.Handler.dispatchMessage(Handler.java:95)
        at android.os.Looper.loop(Looper.java:148)
        at android.app.ActivityThread.main(ActivityThread.java:5417)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)

It's not working but I feel like it's a real step up into the right direction :).

Hi, I faced this problem a few days ago and solved it.
I found the solutions here: http://stackoverflow.com/questions/35066470/using-javacv-and-realm-together-causes-java-lang-unsatisfiedlinkerror/35088655#35088655

and change my targetSDKversion to 18 at build.gradle..

Now, it's working

Hope this will help someone

Try this code to analyze or run "clean project"

    PackageManager pm = getPackageManager();
    try {
        ApplicationInfo info = pm.getApplicationInfo(getPackageName(),0);
        Log.i(TAG, "app info sourceDir: " + info.sourceDir);
        Log.i(TAG, "app info dataDir: " + info.dataDir);
        Log.i(TAG, "app info nativeLibraryDir: " + info.nativeLibraryDir);
    } catch (Exception e){
    }

I have tried to configure ProGuard, and extracted .so files and put them under armeabi folders, but still get classNotFound error. So do I need to try to use ReLinker?

@elyonsaber There are common issues with that on Android devices yes:
https://github.com/bytedeco/javacpp-presets/wiki/The-UnsatisfiedLinkError-X-File-(a-real-experience)

Thanks for your prompt reply! I will try it, and hope it will work.

Was this page helpful?
0 / 5 - 0 ratings