I’m struggling with creating a 2d array of my custom object type ShareStruct:
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);
The first class loading works (the ShareStruct is fine), but the other one (trying to load a ShareStruct[] class) doesn’t. I’ve tried both with and without the L but no luck. Any ideas? I’m new with JNI.
Thanks!
This
jclass myClassArray = (*env)->FindClass(env, "[Lorg/apache/s4/core/ShareStruct");is wrong.To create the array do something like
Here sharedStructObj will have to be created by newObject.
Section 3.3.5 of JNI programmer’s guide has a good related example
This is also nice Create, populate and return 2D String array from native code (JNI/NDK)
EDIT based on comment