When trying your code, you can easily add some statements like this:
JNIEXPORT void JNICALL Java_accessBuffThroughObjectTwo(JNIEnv *env, jobject obj, jobject objectTwo) {
jclass clazz;
jclass bufferClazz;
jobject bufferJObject;
jfieldID fid;
clazz = (*env)->GetObjectClass(env, objectTwo);
assert(clazz != NULL);
fid = (*env)->GetFieldID(env, clazz, "obj", "Ljava/lang/Object;");
assert(fid != NULL);
bufferJObject = (*env)->GetObjectField(env, javascsicommand, fid);
assert(bufferJObject != NULL);
bufferClazz = (*env)->GetObjectClass(env, bufferJObject);
assert(bufferClazz != NULL);
fid = (*env)->GetFieldID(env, bufferClazz, "buff", "[B");
assert(fid != NULL);
}
, , fid NULL. , ObjectTwo java.lang.Object. , ( com/package):
fid = (*env)->GetFieldID(env, clazz, "obj", "Lcom/package/ObjectOne;");
, , fid null, .
, , javascsicommand ObjectTwo.
, , bufferJObject. , , NULL, Java-, , obj null.
Java - :
public class ObjectTwo
{
private ObjectOne obj = new ObjectOne();
...
...
}
.
, null :
bufferClazz = (*env)->GetObjectClass(env, bufferJObject); <-- The bufferJObject was NULL