Доступ к объекту Java в объекте Java в C с использованием JNI

Я относительно новичок в 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");
}

Любая помощь в том, что я делаю неправильно?

5
задан maba 6 August 2012 в 09:13
поделиться