I'm writing a code which must return a long array from C to java using JNI. But the method (*env)->FindClass returns NULL whatever I tried.
Here is my code :
// Returns a 2D long array from C to Java
JNIEXPORT jobjectArray JNICALL Java_awax_tools_AcquisitionWrapper_startAcquisition (JNIEnv *env, jobject obj) {
// (...) Acquisition code
// The 2D long array to return
long** primitive2DArray = data;
// Get the long array class
jclass longArrayClass = (*env)->FindClass(env, "[java/lang/Long");
// Check if we properly got the long array class
if (longArrayClass == NULL) {
// Ooops
return NULL;
}
// Create the returnable 2D array
jobjectArray myReturnable2DArray = (*env)->NewObjectArray(env, (jsize) length1D, longArrayClass, NULL);
// Go through the firs dimension and add the second dimension arrays
for (unsigned int i = 0; i < length1D; i++) {
jlongArray longArray = (*env)->NewLongArray(env, length2D);
(*env)->SetLongArrayRegion(env, longArray, (jsize) 0, (jsize) length2D, (jlong*) primitive2DArray[i]);
(*env)->SetObjectArrayElement(env, myReturnable2DArray, (jsize) i, longArray);
(*env)->DeleteLocalRef(env, longArray);
}
// Return a Java consumable 2D long array
return myReturnable2DArray;
}
I also tried with :
(*env)->FindClass(env, "[L")
(*env)->FindClass(env, "[Long")
(*env)->FindClass(env, "[java.lang.Long")
But none of them seems to work.