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 api
    public native int picc_open();
    public native int picc_remove(byte mode);

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值