java.lang.ExceptionInInitializerError Причина: java.lang.UnsatisfiedLinkError: Библиотека не найдена - PullRequest
0 голосов
/ 21 декабря 2011

У меня есть код на c и c ++.Я добавил эти файлы c и cpp в файл Android.mk.И я успешно создал .so файлы с именем itv.so в моем приложении.Но сейчас, когда я пытаюсь запустить приложение Android, оно показывает ошибку вроде ...

12-20 13:26:31.362: E/AndroidRuntime(716): FATAL EXCEPTION: main
12-20 13:26:31.362: E/AndroidRuntime(716): java.lang.ExceptionInInitializerError
12-20 13:26:31.362: E/AndroidRuntime(716):  at com.example.Internet_TV12.onCreate(Internet_TV12.java:38)
12-20 13:26:31.362: E/AndroidRuntime(716):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
12-20 13:26:31.362: E/AndroidRuntime(716):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627)
12-20 13:26:31.362: E/AndroidRuntime(716):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
12-20 13:26:31.362: E/AndroidRuntime(716):  at android.app.ActivityThread.access$2300(ActivityThread.java:125)
12-20 13:26:31.362: E/AndroidRuntime(716):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)
12-20 13:26:31.362: E/AndroidRuntime(716):  at android.os.Handler.dispatchMessage(Handler.java:99)
12-20 13:26:31.362: E/AndroidRuntime(716):  at android.os.Looper.loop(Looper.java:123)
12-20 13:26:31.362: E/AndroidRuntime(716):  at android.app.ActivityThread.main(ActivityThread.java:4627)
12-20 13:26:31.362: E/AndroidRuntime(716):  at java.lang.reflect.Method.invokeNative(Native Method)
12-20 13:26:31.362: E/AndroidRuntime(716):  at java.lang.reflect.Method.invoke(Method.java:521)
12-20 13:26:31.362: E/AndroidRuntime(716):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
12-20 13:26:31.362: E/AndroidRuntime(716):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
12-20 13:26:31.362: E/AndroidRuntime(716):  at dalvik.system.NativeStart.main(Native Method)
12-20 13:26:31.362: E/AndroidRuntime(716): Caused by: java.lang.UnsatisfiedLinkError: Library itv not found
12-20 13:26:31.362: E/AndroidRuntime(716):  at java.lang.Runtime.loadLibrary(Runtime.java:461)
12-20 13:26:31.362: E/AndroidRuntime(716):  at java.lang.System.loadLibrary(System.java:557)
12-20 13:26:31.362: E/AndroidRuntime(716):  at com.example.Display.<clinit>(Display.java:69)
12-20 13:26:31.362: E/AndroidRuntime(716):  ... 14 more

Я не знаю, почему эта ошибка появляется.Я видел папку lib, в которой есть файл libitv.so.Я также пытался

static {
         try {
             System.loadLibrary("itv");
           // System.load("/data/data/com/example/lib/itv.so");
         }
         catch (UnsatisfiedLinkError use) {
                Log.e("JNI", "WARNING: Could not load itv.so");
            }
        }

Но получаю ту же ошибку.Может кто-нибудь, пожалуйста, сообщите мне решение этой ошибки.Заранее спасибо.

Ответы [ 2 ]

7 голосов
/ 21 декабря 2011

Библиотека будет распознана, если ее имя будет libitv.so и помещено в каталог libs \ armeabi в каталоге вашего приложения до сборки .apk.

Иногда, когда библиотека не копируется полностью (частичная копия), из-за некоторых системных проблем частичная библиотека тоже не будет распознана.

2 голосов
/ 21 декабря 2011

Попробуйте назвать сам файл libitv.so (lib + имя библиотеки + .so) и поместить его в папку armeabi вашего каталога libs

...