jstring ret_str = (*env)->NewStringUTF(env, output);
(*env)->SetObjectArrayElement(env,result,1,ret_str);
jint bit_count = 5;
(*env)->SetObjectArrayElement(env,result,0,(jobject)bit_count);
最后一行给出错误致命错误。
此处output
为char*
,result
为jobjectArray
。
我只需要为jobjectArray添加字符串,整数,浮点数等等,并希望返回jobjectArray。
当我添加jstring时,他们没有错误,但对于其他原始类型,它的抛出错误。
答案 0 :(得分:0)
你不能像在Java中那样将jint转换为jobject。 C不知道如何推广该数据类型。您需要在JNI中找到java.lang.Integer类,并使用jint参数构造它以获取Integer jobject。
以下是一些代码,请返回并查看文档并执行所需的错误检查。
jclass Integer_class = (*env)->FindClass(env, "java/lang/Integer");
jmethodID = Integer_init = (*env)->GetMethodID(
env,
Integer_class,
"<init>",
"(I)V");
Integer_object = (*env)->NewObject(
env,
Integer_class,
Integer_init,
bit_count);