Android JNI上的“UnsatisfiedLinkError”

时间:2012-06-23 06:57:16

标签: java android java-native-interface

在我的项目中,我有一个名为PlayerCluster.java的包装类,它加载本机库,并提供本机函数。如果我更改了类名(PlayerCluster.java)或其包,则在调用本机函数时会得到java.lang.UnsatisfiedLinkError

为什么在重命名类名时会出现此错误?是否有一种方法可以在特定的java类中加载本机lib?

1 个答案:

答案 0 :(得分:2)

如果重命名该类,则还必须重命名本机库中的JNIEXPORT方法,使它们与新的Java类名称匹配,然后重建您的本机库。

例如,给定此方法signture:

JNIEXPORT jobjectArray JNICALL
Java_com_mn_rootscape_utils_NativeMethods_getFilesPermissions( JNIEnv* env, jobject thizz, jobjectArray filePathsArray ) 

NativeMethods是Java类,正如您所看到的,它是本机函数签名的一部分。