Я относительно новичок в JNI и освоил основы работы с целыми числами и массивами в объектах Java с использованием JNI. Теперь я пытаюсь изменить/получить доступ к объекту Java внутри объекта Java.
Я искал в Интернете и на Stack Overflow и еще не выяснил, как это сделать.
Вот пример.
На Яве:
public class ObjectOne
{
private byte[] buff;
...
...
}
public class ObjectTwo
{
private ObjectOne obj;
...
...
}
В JNI, как мне получить доступ к «баффу» из ObjectOne через ObjectTwo? Я пробовал что-то вроде этого...
JNIEXPORT void JNICALL Java_accessBuffThroughObjectTwo(JNIEnv *env, jobject obj, jobject objectTwo)
{
jclass clazz;
jclass bufferClazz;
jobject bufferJObject;
clazz = (*env)->GetObjectClass(env, objectTwo);
fid = (*env)->GetFieldID(env, clazz, "obj", "Ljava/lang/Object;");
bufferJObject = (*env)->GetObjectField(env, javascsicommand, fid);
bufferClazz = (*env)->GetObjectClass(env, bufferJObject); <-- Fails here for Access Violation
fid = (*env)->GetFieldID(env, bufferClazz, "buff", "[B");
}
Любая помощь в том, что я делаю неправильно?