java.lang.UnsatisfiedLinkError: Native method not found 可能引起的原因
2017-07-28 18:25
477 查看
在本地使用.so库时,偶尔会出现java.lang.UnsatisfiedLinkError: Native method not found 异常,产生原因可能如下:
1,生成的.h头文件中 Java没有大写。例如:
JNIEXPORT void JNICALL java_com_android_jni_center_NewJni_sendData
(JNIEnv * env, jobject obj, jstring str){
printf("%s",str);
}
2,存在对应native方法的类,没有静态加载so库 System.loadLibrary("JniC");
public class NewJni {
public native String getStringFromC();
public native void sendData(String data);
public native void sendIntData(int data);
public native int getAge();
static {
System.loadLibrary("JniC");
}
}
3,AndroidStudio中,so文件不能放到libs下,放到libs也会出现找不到情况。eclipse 是可以将so文件放到libs下的
正确的方式是放到代码的src/main/jniLibs下面。如下:
4,某些第三方的so文件,要求项目的native方法必须放入到指定的包名下,包名不能任意命名。如果你将含有native方法的类,没有按照他的规定放到指定的位置也可能会出现找不到的情况。大概原因是因为他的so已经按照指定的包名,类名和方法名,生成了对应的so。如果你不按照指定的位置放,那么native方法就不能与so中的方法一一对应,所以就是匹配不到的。
1,生成的.h头文件中 Java没有大写。例如:
JNIEXPORT void JNICALL java_com_android_jni_center_NewJni_sendData
(JNIEnv * env, jobject obj, jstring str){
printf("%s",str);
}
2,存在对应native方法的类,没有静态加载so库 System.loadLibrary("JniC");
public class NewJni {
public native String getStringFromC();
public native void sendData(String data);
public native void sendIntData(int data);
public native int getAge();
static {
System.loadLibrary("JniC");
}
}
3,AndroidStudio中,so文件不能放到libs下,放到libs也会出现找不到情况。eclipse 是可以将so文件放到libs下的
正确的方式是放到代码的src/main/jniLibs下面。如下:
4,某些第三方的so文件,要求项目的native方法必须放入到指定的包名下,包名不能任意命名。如果你将含有native方法的类,没有按照他的规定放到指定的位置也可能会出现找不到的情况。大概原因是因为他的so已经按照指定的包名,类名和方法名,生成了对应的so。如果你不按照指定的位置放,那么native方法就不能与so中的方法一一对应,所以就是匹配不到的。
相关文章推荐
- java.lang.UnsatisfiedLinkError: Native method not found 三种可能解决方案
- java.lang.UnsatisfiedLinkError: Native method not found 三种可能解决
- java.lang.UnsatisfiedLinkError: Native method not found 三种可能解决方案
- android native开发时:java.lang.UnsatisfiedLinkError: Native method not found的处理
- eclispse项目导入Android项目 java.lang.UnsatisfiedLinkError: Native method not found:
- java.lang.UnsatisfiedLinkError: Native method not found解决方案
- javaee jsp中servlet发生java.lang.ClassNotFoundException可能原因
- Android NDK 中C/C++ 代码java.lang.UnsatisfiedLinkError , Native method not found 问题
- Caused by: java.lang.UnsatisfiedLinkError: Native method not found: com.gao.gni.JNI.hello:()V
- java.lang.NoSuchMethodError异常可能出现的原因
- java.lang.UnsatisfiedLinkError: Native method not found解决方法
- 修改Android 4.2.2的原生Camera引出的java.lang.UnsatisfiedLinkError: Native method not found,及解决方法
- 修改Android 4.2.2的原生Camera引出的java.lang.UnsatisfiedLinkError: Native method not found,及解决方法
- java.lang.UnsatisfiedLinkError: Native method not found:问题解决
- android java.lang.UnsatisfiedLinkError: Native method not found及.so找不到无法加载问题
- 百度地图加载问题 Java.lang.UnsatisfiedLinkError: Native method not found: com.baidu...
- BaiduMap提示 java.lang.UnsatisfiedLinkError: Native method not found:
- java.lang.UnsatisfiedLinkError: Native method not found问题解决
- java.lang.UnsatisfiedLinkError: Native method not found问题
- Android Ndk 编译时出现java.lang.UnsatisfiedLinkError: Native method not found:问题归纳