android+jni+构造函数,在JNI中调用构造函数失败Android

我想从我的JNI Android代码调用构造函数;但不知何故,它失败,以下例外.. 我相信我失去了一些非常小的东西;但我无法弄清楚......任何人都可以请指出?在JNI中调用构造函数失败Android

02-14 16:56:56.689: W/dalvikvm(397): JNI WARNING: JNI method called with exception raised

02-14 16:56:56.710: W/dalvikvm(397): in Lpv/ndk/Employee;.createWithAge (I)Lpv/ndk/Employee; (GetMethodID)

02-14 16:56:56.710: W/dalvikvm(397): Pending exception is:

02-14 16:56:56.710: I/dalvikvm(397): Ljava/lang/NoClassDefFoundError;: pv.ndk.Employee;

02-14 16:56:56.723: I/dalvikvm(397): at pv.ndk.Employee.createWithAge(Native Method)

02-14 16:56:56.740: I/dalvikvm(397): Caused by:

02-14 16:56:56.740: I/dalvikvm(397): Ljava/lang/ClassNotFoundException;: pv.ndk.Employee; in loader dalvik.system.PathClassLoader[/data/app/pv.ndk-2.apk]

这里是我的代码:

Employee类有2个构造函数,当我调用方法getAge()返回岁

Employee()

Employee(int age)

int getAge();

令人惊讶的方法..呼叫经过并提取年龄...但是,当我尝试调用“员工构造函数”,然后尝试getAge()这个异常抛出...

莫名其妙它无法找到类: 我尝试过使用GetObjectClass的所有可能性()

This works;当我通过呼叫中的Employee对象时

JNIEXPORT jint JNICALL Java_pv_ndk_Employee_getAgeC(JNIEnv *env, jobject callingObject, jobject employeeObject)

{

jclass employeeClass = env->GetObjectClass(employeeObject);

jmethodID midGetName = env->GetMethodID(employeeClass, "getAge", "()I");

int age = env->CallIntMethod(employeeObject, midGetName);

//other code

}

这是行不通的;我不知道为什么它不能找到类。 我试过用“Lpv/ndk/Emploee”“LEmployee”“pv/ndk/Employee”..甚至用以下方法尝试:

jclass localRefCls = env->FindClass("pv/ndk/Employee");

jclass clazzEmployee = (_jclass*)env->NewGlobalRef(localRefCls);

JNIEXPORT jobject JNICALL Java_pv_ndk_Employee_createWithAge(JNIEnv *env, jobject callingObject, jint age) {

jclass employeeClass = env->FindClass("pv/ndk/Employee");

jmethodID midConstructor = env->GetMethodID(employeeClass, "", "(I)V"); // BOOM SCREWED HERE .. !!

}

但每次我的代码来env->的GetMethodID - 虚拟机中止...

2012-02-15

Pranav

+0

你可以检查employeeClass变量是否不为NULL? –

2012-02-15 03:48:19

+0

我不明白你的第二个代码片段。 localRefCls有什么范围,什么时候分配? –

2012-02-15 16:55:08

+0

@Martins:employeeClass不为NULL –

2012-02-18 01:35:37

  • 0
    点赞
  • 0
    收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值