2015-12-13 20 views
1

的錯誤:java.lang.UnsatisfiedLinkError中:無法從裝載器裝載native_sample

Process: com.example.syafiq.opencvoi, PID: 7760 
java.lang.UnsatisfiedLinkError: Couldn't load native_sample from loader dalvik.system.PathClassLoader[dexPath=/data/app/com.example.syafiq.opencvoi-13.apk,libraryPath=/data/app-lib/com.example.syafiq.opencvoi-13]: findLibrary returned null 
at java.lang.Runtime.loadLibrary(Runtime.java:358) 
at java.lang.System.loadLibrary(System.java:526) 
at com.example.syafiq.opencvoi.Sample3Native$1.onManagerConnected(Sample3Native.java:79) 
at org.opencv.android.AsyncServiceHelper$3.onServiceConnected(AsyncServiceHelper.java:319) 
at android.app.LoadedApk$ServiceDispatcher.doConnected(LoadedApk.java:1114) 
at android.app.LoadedApk$ServiceDispatcher$RunConnection.run(LoadedApk.java:1131) 
at android.os.Handler.handleCallback(Handler.java:733) 
at android.os.Handler.dispatchMessage(Handler.java:95) 
at android.os.Looper.loop(Looper.java:146) 
at android.app.ActivityThread.main(ActivityThread.java:5602) 
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:1283) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1099) 
at dalvik.system.NativeStart.main(Native Method) 

的sample3Native.java線79分別爲:

public void onManagerConnected(int status) { 
     switch (status) { 
      case LoaderCallbackInterface.SUCCESS: 
      { 
       Log.i(TAG, "OpenCV loaded successfully"); 

       // Load native library after(!) OpenCV initialization 
       System.loadLibrary("native_sample"); 

而AsyncServiceHelper.Java線319是

mUserAppCallback.onManagerConnected(status); 

Android.mk

LOCAL_PATH := $(call my-dir) 
include $(CLEAR_VARS) 
include ../../sdk/native/jni/OpenCV.mk 
LOCAL_MODULE := native_sample 
LOCAL_SRC_FILES := jni_part.cpp 
LOCAL_LDLIBS += -llog -ldl 
include $(BUILD_SHARED_LIBRARY) 

而且application.mk

APP_STL := gnustl_static 
APP_CPPFLAGS := -frtti -fexceptions 
APP_ABI := armeabi armeabi-v7a 
LOCAL_ARM_NEON := true 

有一個在代碼中沒有錯誤。我已經嘗試了幾種解決方案,但結果仍然相同,代碼是從開源網站獲得的。我用android studio還不夠好,而且我還在學習。我希望你們能幫我解決這個錯誤。我非常感謝您的幫助和考慮,以幫助我解決我的錯誤。我感謝你的時間:)

+0

也許你的手機是不是armeabi或armeabi-V7A。可你去/ data/app中-LIB/COM。 example.syafiq.opencvoi-13在手機上? –

+0

我已經安裝了armeabi-v7a,但我沒有安裝armeabi。可能嗎?因爲我的朋友告訴我沒關係只安裝armeabi-v7a。如果不是,我現在可以安裝armeabi。 –

+0

是你的應用程序的Android應用程序? –

回答

0

從我的角度來看,你的「native_sample」庫的版本有問題。因爲它是寫在documentation

Thrown if the Java Virtual Machine cannot find an appropriate native-language definition of a method declared native.

這有可能是有兩個版本在類路徑和JVM加載錯誤的版本。所以它找到庫,但是在類加載過程中發現不一致,可能需要的方法被添加到後來的lib版本中。

我建議嘗試這樣的:

System.load(String path) //with an absolute path to needed lib 

另見:Difference between System.load() and System.loadLibrary in Java

+0

謝謝,我先累了,然後看看你給我的鏈接。 –

0
apply plugin: 'com.android.application' 

android { 
    compileSdkVersion 23 
    buildToolsVersion "23.0.2" 

    defaultConfig { 
     applicationId "com.example.syafiq.opencvoi" 
     minSdkVersion 19 
     targetSdkVersion 23 
     versionCode 1 
     versionName "1.0" 
    } 
    buildTypes { 
     release { 
      minifyEnabled false 
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
     } 
    } 
    sourceSets { 

      // jniLibs.srcDirs = ['libs'] 
     main{ 
     jniLibs{ 
      srcDir 'libs' 
     } 
     } 

    } 


} 

dependencies { 
    compile fileTree(include: ['*.jar'], dir: 'libs') 
    testCompile 'junit:junit:4.12' 
    compile 'com.android.support:appcompat-v7:23.1.1' 
    compile project(':libraries:opencv') 
} 
+0

它給了我一個錯誤:/「沒有這樣的屬性:srcDirs類:com.android.build.gradle.internal.api.DefaultAndroidSourceSet_Decorated」 –

+0

我已編輯它。 –

+0

對於最近的回覆感謝抱歉,並感謝您對它進行編輯。它給了我不同的錯誤「找不到Gradle DSL方法:srcDir():可能的原因:項目'OpenCVoi'可能使用了不包含該方法的Gradle版本,另一個原因是:構建文件可能缺少Gradle插件「:/ –

相關問題