600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > JNI中FindClass查找类失败的问题

JNI中FindClass查找类失败的问题

时间:2023-01-24 11:00:15

相关推荐

JNI中FindClass查找类失败的问题

例如有如下的native代码用来寻找类,然后注册接口函数:

static const char *classPathName = "android/device/PiccReaderNative/PiccReaderNative";static int registerNatives(JNIEnv* env){jclass clazz;clazz = env->FindClass(classPathName);if (clazz == NULL) {ALOGE("Native registration unable to find class '%s'", classPathName);return JNI_FALSE;}else{ALOGI("find class sucess");}if (env->RegisterNatives(clazz, gMethods, sizeof(gMethods)/sizeof(gMethods[0])) < 0) {ALOGE("RegisterNatives failed for '%s'", classPathName);return JNI_FALSE;}

有java代码如:

文件名为:android/device/PiccReaderNative/PiccReaderNative.java

package android.device.PiccReaderNative;public class PiccReaderNative {//picc jni apipublic native int picc_open();public native int picc_remove(byte mode);

之前我老是失败,原来是类名的格式没注意,类名classPathName的格式是:包名/类名,先提供包的名字,然后提供包里面的类的名字。从上面的例子,你的包名是android.device.PiccReaderNative,那么前面就是android/device/PiccReaderNative,包里面有个类叫做PiccReaderNative,那么后面的类名就是PiccReaderNative,所以全部的类的路径名就是:android/device/PiccReaderNative/PiccReaderNative

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。