JNI Pass Char * Array 2D al codice JAVA

Voglio passare il seguente array di puntatori attraverso il livello JNI dal codice C

char *result[MAXTEST][MAXRESPONSE] = { { "12", "12", "" }, { "8", "3", "" }, { "29", "70", "" }, { "5", "2", "" }, { "42", "42", "" } }; 

Nel codice java ho scritto la seguente dichiarazione

 public static native String[][] getResult(); 

Sono confuso su come passare quell’array attraverso il livello JNI al codice Java ??? Di seguito è riportata la descrizione del livello JNI

 JNIEXPORT jobjectArray JNICALL Java_com_example_CheckResult_getResult (JNIEnv *env, jclass thiz) { Confused over here ???? } 

Alla fine, dopo ore di lavoro sul collegamento condiviso di jop, ho potuto risolvere il mio problema. Il codice è il seguente:

 JNIEXPORT jobjectArray JNICALL Java_com_example_CheckResult_getResult(JNIEnv *env, jclass thiz) { jboolean flag = JNI_TRUE; jclass stringClass = (*env)->FindClass(env, "java/lang/String"); jobjectArray row; jobjectArray rows; jsize i, j; for(i=0; i<5; i++) { row = (*env)->NewObjectArray(env, MAXRESPONSE, stringClass, 0); for(j=0; j<3; j++) { (*env)->SetObjectArrayElement(env, row, j, (*env)->NewStringUTF(env, userResponse[i][j])); } if(flag == JNI_TRUE) { flag = JNI_FALSE; rows = (*env)->NewObjectArray(env, MAXTEST, (*env)->GetObjectClass(env, row), 0); } (*env)->SetObjectArrayElement(env, rows, i, row); } return rows; }