java.lang.UnsatifiedLinkError:无法';t从装载机装载本机样本

java.lang.UnsatifiedLinkError:无法';t从装载机装载本机样本,java,android,classloader,Java,Android,Classloader,错误: 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.syafi

错误:

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还不够好,我还在学习。我希望你们能帮我解决这个错误。我真的很感谢你的帮助和考虑,帮助我解决我的错误。感谢您的时间:)

从我的角度来看,您的“本机样本”库的版本有问题。正如上面写的

如果Java虚拟机找不到合适的 声明为本机的方法的本机语言定义

类路径中可能同时存在两个版本,而jvm加载了错误的版本。所以它找到了库,但在类加载过程中发现了不一致性,可能在以后的库版本中添加了必需的方法

我建议试试这个:

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

另请参见:

从我的角度来看,您的“本机样本”库的版本有问题。正如上面写的

如果Java虚拟机找不到合适的 声明为本机的方法的本机语言定义

类路径中可能同时存在两个版本,而jvm加载了错误的版本。所以它找到了库,但在类加载过程中发现了不一致性,可能在以后的库版本中添加了必需的方法

我建议试试这个:

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


另请参见:

可能您的手机不是armeabi或armeabi-v7a。您可以在手机中转到/data/app lib/com.example.syafiq.opencvoi-13吗?我已经安装了armeabi-v7a,但没有安装armeabi。可能吗?因为我的朋友告诉我只安装armeabi-v7a是可以的。如果不是,我现在可以安装armeabi。你的应用程序是安卓应用程序吗?是的,它是安卓应用程序。你可以显示你的构建。gradle吗?或者你可以提供代码链接吗?也许你的手机不是armeabi或armeabi-v7a。你可以在你的手机中转到/data/app lib/com.example.syafiq.opencvoi-13吗?我已经安装了armeabi-v7a,但我没有安装armeabi。可能吗?因为我的朋友告诉我只安装armeabi-v7a是可以的。如果不是,我现在就可以安装armeabi。你的应用程序是安卓应用程序吗?是的,它是安卓应用程序。你能显示你的版本吗?gradle?或者你能提供代码链接吗?谢谢,我先读了你给我的链接。谢谢,我先读了,然后读了你给我的链接。它给了我一个错误:/“没有这样的属性:srcDirs for class:com.android.build.gradle.internal.api.DefaultAndroidSourceSet_装饰”hey抱歉回复太晚,感谢编辑它。它给了我不同的错误“找不到gradle DSL方法:srcDir():可能的原因:项目“OpenCVoi”可能使用的gradle版本不包含该方法。另一个原因是:构建文件可能缺少一个Gradle插件“:/你能把你的项目推到github吗?或者你能提供你找到代码的链接吗?单靠一个文件是很难解决的。这里是tiny sunlight,很抱歉它给我的回复太晚了一个错误:/”没有这样的属性:srcDirs for class:com.android.build.gradle.internal.api.DefaultAndroidSourceSet_装饰“hey抱歉回复太晚,感谢编辑它。它给了我不同的错误”gradle DSL方法找不到:srcDir():可能的原因:项目“OpenCVoi”可能使用的gradle版本不包含该方法。另一个原因是:构建文件可能缺少Gradle插件“:/您可以将您的项目推送到github吗?或者您可以提供找到代码的链接吗?单靠一个文件很难解决。给您,很抱歉回复太晚