在我的项目中,我有一个名为PlayerCluster.java
的包装类,它加载本机库,并提供本机函数。如果我更改了类名(PlayerCluster.java
)或其包,则在调用本机函数时会得到java.lang.UnsatisfiedLinkError
。
为什么在重命名类名时会出现此错误?是否有一种方法可以在特定的java类中加载本机lib?
答案 0 :(得分:2)
如果重命名该类,则还必须重命名本机库中的JNIEXPORT
方法,使它们与新的Java类名称匹配,然后重建您的本机库。
例如,给定此方法signture:
JNIEXPORT jobjectArray JNICALL
Java_com_mn_rootscape_utils_NativeMethods_getFilesPermissions( JNIEnv* env, jobject thizz, jobjectArray filePathsArray )
NativeMethods
是Java类,正如您所看到的,它是本机函数签名的一部分。