JNI如何从jobject访问jobjectArray

3

我有一个jobject对象,里面包含一个jobjectArray数组。我正在使用GetObjectField方法获取jobjectArray,并对其进行转换,但是它不起作用,有人可以帮忙吗?


 jfieldID representationArrayF = env->GetFieldID(className, "representationArray", "[Lcodec/video/initial/MMRepresentation");
 jobject objectArr=(jobject)env->GetObjectField(jpresentationInfo, representationArrayF);
 jobjectArray*  objectArray=reinterpret_cast<jobjectArray*>(&objectArr);
 jobject representation=(jobject) env->GetObjectArrayElement(*objectArray, i)

请查看以下链接以访问对象信息:http://jnicookbook.owsiak.org/recipe-No-020/,并在此处了解在Java和C之间传递数组的感觉:https://github.com/mkowsiak/jnicookbook/tree/master/recipeNo026。 - Oo.oO
什么应该工作?发生了什么事? - Marcos Vasconcelos
@MarcosVasconcelos 我在执行 GetObjectArrayElement(*objectArray, 0) 的时候遇到了错误 [ V [libjvm.so+0x6de77c] jni_GetObjectArrayElement+0xcc]。 - vipin
1个回答

0

这是一个愚蠢的错误,对于简单参数来说还好,但对于数组参数来说却不起作用。我需要在结尾加上分号 [Lcodec/video/initial/MMRepresentation; 而不是[Lcodec/video/initial/MMRepresentation。

不知道为什么对于简单参数如III,不需要分号。


教训:不要猜测,使用 javap -s 的输出。它永远不会出错。 - user207421
谢谢你 :) - vipin
所有对象都需要'L +完整路径名称+;',只有基本类型才有它们的值。 - Marcos Vasconcelos

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