JNI: NoSuchFieldError

Wyjście z: javap -s SomeClass

public org.someapp.SomeClass$_data data;
  Signature: Lorg/someapp/SomeClass$_data;

Definicja SomeClass w Javie:

class SomeClass
{
    private class _data {
        byte[] something = new byte[1234];
    }

    public _data data;
}

Definicja natywnej funkcji w Javie:

public static native int NativeFunction(SomeClass something);

Implementacja Java:

SomeClass x = new SomeClass();
NativeInterface.NativeFunction(x);

Jednak po wykonaniu następującego kodu:

JNIEXPORT jint JNICALL Java_org_someapp_NativeInterface_NativeFunction(JNIEnv* env, jobject obj, jobject someobject) {
    jclass some_class = (*env)->GetObjectClass(env, someobject);
    jfieldID data = (*env)->GetFieldID(env, some_class, "data", "Lorg/someapp/SomeClass$_data"); 
}

Java zgłasza wyjątek „NoSuchFieldError ;: data” w wywołaniu GetFieldID. Nie rozumiem .. Podpis jest w porządku (skopiowany prosto z javap).

Zauważ, że uzyskanie identyfikatora pola dla prostszej zmiennej, takiej jak skrót unsigned short (z podpisem „S”), działa dobrze.

questionAnswers(1)

yourAnswerToTheQuestion