Java 对象数组的数组(2d数组)JNI

Java 对象数组的数组(2d数组)JNI,java,arrays,java-native-interface,Java,Arrays,Java Native Interface,我正在努力创建自定义对象类型ShareStruct的2d数组: jobjectArray ret ; jobjectArray ins ; jobjectArray outs; jclass myClass = (*env)->FindClass(env,"org/apache/s4/core/ShareStruct"); if (myClass==NULL) fprintf(stderr, "Class ShareStruct not found"); jclass myClassA

我正在努力创建自定义对象类型ShareStruct的2d数组:

jobjectArray ret ;
jobjectArray ins ;
jobjectArray outs;

jclass myClass = (*env)->FindClass(env,"org/apache/s4/core/ShareStruct");
if (myClass==NULL) fprintf(stderr, "Class ShareStruct not found");

jclass myClassArray = (*env)->FindClass(env, "[Lorg/apache/s4/core/ShareStruct");
if (myClassArray==NULL) fprintf(stderr, "Class ShareStruct[] not found");

ins = (*env)->NewObjectArray(env, in, myClass, NULL);
outs = (*env)->NewObjectArray(env, out, myClass, NULL);
ret = (*env)->NewObjectArray(env, 2, myClassArray, NULL);
第一个类可以加载(ShareStruct可以),但另一个类(尝试加载ShareStruct[]类)不能。我试过带L和不带L,但运气都不好。有什么想法吗?我是JNI的新手


谢谢

这个
jclass myClassArray=(*env)->FindClass(env,[Lorg/apache/s4/core/ShareStruct”);
是错误的。 要创建数组,请执行以下操作

 ret = (*env)->NewObjectArray(env,sizeOfArray,myClass,NULL);  
(*env)->SetObjectArrayElement( env, ret,index, sharedStructObj);  
此处必须由newObject创建sharedStructObj。
的第3.3.5节有一个很好的相关示例

这也很好

根据评论进行编辑

in = (*env)->NewObjectArray(env,sizeOfArray,myClass,NULL);
out = (*env)->NewObjectArray(env,sizeOfArray,myClass,NULL);
ret= (*env)->NewObjectArray(env,sizeOfArray,myClass,NULL);
(*env)->SetObjectArrayElement( env, ret,0, in); 
(*env)->SetObjectArrayElement( env, ret,1, out); 

外部数组必须使用对象数组:

jclass myClassArray=(*env)->FindClass(env,“[Ljava/lang/Object;”);


在类似的情况下,2D字符串数组也适用于我。请同时识别字符串中的尾随分号。

我不知道这个问题是否仍然相关,但我认为您只是忘记了数组类规范末尾的分号:

jclass myClassArray = (*env)->FindClass(env, "[Lorg/apache/s4/core/ShareStruct;");

但是我想创建一个ShareStruct[]数组,因此java等价物应该是ShareStruct[][]我不知道这段代码是如何做到的:(实际上,我想做:ShareStruct[]in;ShareStruct[]out;ShareStruct[]ret;ret[0]=in;ret[1]=out;这是一个很好的答案,但是“JNI程序员指南的第3.3.5节有一个很好的相关示例”,链接在2016年5月18日失效。链接到JNI程序员指南(第3.3.5节有@CloudyTrees提到的示例):更新了我的答案,有帮助吗?