2012-06-23 92 views
2

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

为什么我重命名类名时会出现此错误?有没有一种方法可以让native lib必须在特定的java类中加载?

+0

你的问题很好,但我包含了整个错误,因为它提供了更多的信息,并使它更容易找到。人们会更快地回答您的问题是否包含大量信息。 _ _ _ _我也强烈建议您接受如果它回答您的问题时提供的答案。通过这样做,你也可以得到积分,这对你们双方都是有益的。此外,如果您接受对您有效的答案,您的问题将不会显示在未答复部分。所以像我这样的人不会浪费时间在你的问题上。 – ForceMagic

回答

2

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

例如,假设这种方法signture:

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

NativeMethods是Java类,你可以看到,是本地函数签名的一部分。

+0

我明白了。谢谢 – englefly

+2

好的。考虑在确定它是你需要的之后接受答案。 –