在JNI中创建一个整数对象

8

我希望从JNI层返回一个Integer对象到Java层。当调用NewObject(env, interger, init, rc)时,以下代码会崩溃。请问创建一个Integer对象并将其返回的正确方法是什么?

jint rc = 0;

jclass intClass = (*env)->FindClass(env, "java/lang/Integer");
if (intClass == NULL) {
    return NULL;
}
jmethodID init =  (*env)->GetMethodID(env, intClass, "intValue", "()I");
if (init == NULL) {
    return NULL;
}
jobject rc_obj = (*env)->NewObject(env, intClass, init, rc);
if (rc_obj == NULL) {
    return NULL;
}

return rc_obj;

谢谢!

1个回答

11

试试这个:

jclass cls = (*env)->FindClass(env, "java/lang/Integer");
jmethodID midInit = (*env)->GetMethodID(env, cls, "<init>", "(I)V");
if (NULL == midInit) return NULL;
jobject newObj = (*env)->NewObject(env, cls, midInit, number);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接