出现java.lang.UnsatisfiedLinkError: Couldn't load cbcencrypt-jni from loader dal,大多数可能是因为加载NDK库.so的时候,库缺失。而库缺失很有可能是NDK在build的时候因为不知名原因自动删掉了你的库文件。
我在解决这个问题的时候,尝试了很多办法,最后换了一个ndk,就正常了
附上NDK下载地址:
http://www.androiddevtools.cn/
注意:ndk11build的时候会报sh不到文件,需要添加进去ndk-build.cmd &find-win-host.cmd(附件下载)
会出现一个找不到路径的提示,但是仍可以build program成功。
事后发现不知道什么原因,原来我用的是MAC OS的NDK,添加进win的ndk-build.cmd然后可以跑,非常奇怪。。。绕过了NDK的build反而可以run了,为什么呢
在mac上,则需要把ndk-build.cmd改成ndk-build,覆盖掉原ndk-build,则也可以run成功
最终解决办法:
困扰了我一个月的问题,原来是这样的,后来我换了平台,换了同事最新的NDK,发现如下报错:
android ndk your app_build_script points to an unknown file ./jni/android.mk
发现是NDK_PROJECT_PATH定义的路径问题,然后我参考如下文章:
http://blog.csdn.net/nodeathphoenix/article/details/7684230
发现了NDK_PROJECT_PATH是在build/core/build-local.mk里面定义的,然后更改路径为
E:\Java\NDK\2nd\android-ndk-r10\samples\cbcencrypt-jni
同时,最新的NDK/samples里面是多了最新的cbcencrypt-jni
[可以参考:http://blog.csdn.net/asmcvc/article/details/9311541
里面是如何生成.so文件的(application.mk里可以指定生成.so的类型,包括x86,mips等等)]
最后可以RUN成功了!!!
总结一下原理:
1.不配置NDK_PROJECT_PATH:
把c/c++文件放到工程的jni文件夹内
同时在Android.mk中添加如下
LOCAL_MODULE := EdgeDetection
LOCAL_SRC_FILES := EdgeDetection.cpp
LOCAL_MODULE := cbcencrypt-jni
LOCAL_SRC_FILES := cbcencrypt-jni.c
则NDK在编译的时候会自动搜索项目中的c/c++文件进行编译。
这是不行的:因为后一个LOCAL_MODULE会覆盖掉上一个的,导致上一个.so被删除,只能有一个LOCAL_MODULE
2.不配置NDK_PROJECT_PATH:
如上文所说,更改core/build-local.mk,配置里面的NDK_PROJECT_PATH,指向c/c++文件所在路径即可
注意,如报错
target pattern contains no '%'
可以把obj文件夹清掉即可
相关推荐
解决方案:Exceptionin thread "main" java.lang.UnsatisfiedLinkError:org.apache.hadoop.util.NativeCrc32.nativeCo
解决方法 后面我把原先tomcat启动环境用的jdk1.7改为了本机安装的jdk1.8就不在报错。 具体过程: 在myeclipse中点击window→preference→在搜索框中输入Tomcat→选择安装的tomcat版本,我这里是选择Tomcat 7.x→点击...
Java.lang.UnsatisfiedLinkError解决方法 Java.lang.UnsatisfiedLinkError是一种常见的错误类型,通常发生在Java应用程序中,当Java程序尝试加载Native库或DLL文件时,可能会出现这种错误。本文将详细介绍Java.lang...
本文件夹专为以下错误对症下药。...Exception in thread "VFW Request Thread" java.lang.UnsatisfiedLinkError: JMFSecurityManager: java.lang.UnsatisfiedLinkError: no jmvfw in java.library.path
总结一下,解决`java.lang.UnsatisfiedLinkError`的步骤包括: 1. 检查.so文件是否正确放入`src/main/jniLibs`目录,并在Gradle配置中指定正确的ABI支持。 2. 确保Java代码中的`System.loadLibrary`调用加载了正确...
Exception in thread main java.lang.UnsatisfiedLinkError解决
loadLibrary msc error:java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader[DexPathList[[zip file “/data/app/com.example.xflinean-1/base.apk”],nativeLibraryDirectories=[/vendor/lib, /system/...
我在进行MapReduce本地测试的时候,遇见下面的报错: ...解决方法:①第一步:在项目工程中加入NativelO.java,注意包名必须与源码中一致 ②第二步:将access方法的返回值改为true,不让他去调用access0() 类似
解决java引入sigar运行时报错"java.lang.UnsatisfiedLinkError: org.hyperic.sigar.Mem.gather",将压缩包解压后,放入本地项目lib中即可解决该类问题,该jar包由官网下载
最近我们发现很多用户...java.lang.UnsatisfiedLinkError: couldn't find libarcsoft_face_engine.so 原因: 在安装应用时,APK中指定的ABI目录下没有发现指定的动态库,寻找apk中动态库的规则详见 https://developer
AndroidRuntime: java.lang.UnsatisfiedLinkError: Couldn’t load airtalkee from loader dalvik.system.PathClassLoader[DexPathList[[zip file “/system/app/POCM3A.apk”, zip file “/data/data/com.cmccpo
1.错误Can't load IA 32-bit .dll on a AMD 64-bit platform解决方案 2.springboot启动报错java.lang.UnsatisfiedLinkError: no tcnative-1 in java.library.path 3.tomcat-native-1.2.24-openssl-1.1.1g-win32-bin
UnsatisfiedLinkError exception loading native library: njni10 java.lang.UnsatisfiedLinkError: jniGetOracleHome
安装jpcap报错:Exception in thread "main" java.lang.UnsatisfiedLinkError: C:/Windows/System32/Jpcap.dll: Can't find dependent libraries 解决办法。
在Android开发过程中,有时会遇到一个令人困惑的错误——`java.lang.NoClassDefFoundError`。这个错误通常意味着在运行时找不到某个类的定义,即使编译时该类是可用的。在本例中,问题出在一个特定的情景:在Android...
java.lang.UnsatisfiedLinkError: No implementation found for int com.bun.miitmdid.e.a() (tried Java_com_bun_miitmdid_e_a and Java_com_bun_miitmdid_e_a__) 下面这个异常,多半是由于没有调用System....
在Android平台上进行JNI(Java Native Interface)开发时,有时会遇到`java.lang.UnsatisfiedLinkError`这样的错误,这通常表明Java程序无法找到对应的本地库方法。本问题中,开发者在将C语言编写的JNI方法转换为C++...