java.lang.UnsatisfiedLinkError错误

5,220 views

目前这个错误主要是针对Android的解决办法,至于其他如Web应用,DLL调用的错误可以参考。

将android的A项目的打包好的so文件,放到了B项目时候,调用就会出错:java.lang.UnsatisfiedLinkError。

其实原因就只找不到相应的so路径。重新编译so文件固然可以解决,但比较麻烦。出错的根源在于把java代码声明的JNI方法转化成C\C++头文件时产生的路径与新的项目路径不一样造成的,如A项目执行javah -classpath bin/classes com.jni.main.Jni, com.jni.main.Jni是A项目的包名,如果B项目的jni函数的包名为 com.test.main.Jni,那么两个包名不一致,造成java.lang.UnsatisfiedLinkError错误。将B项目的 com.test.main.Jni改为 com.jni.main.Jni即可以使用A项目的so文件。

如果B项目不想重新编译而使用A项目的so文件,则需要将B项目Jni的类包名与A项目的包名一致即可。

Leave a Reply

Your email address will not be published. Required fields are marked *

*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>