tutorial r17b r16 r13 ndk nazareno java android jni

java - r17b - ndk r13



JNI: NoSuchFieldError (1)

Salida de: javap -s SomeClass

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

Definición de SomeClass en Java:

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

Definición de la función nativa en Java:

public static native int NativeFunction(SomeClass something);

Implementación de Java:

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

Sin embargo, cuando se ejecuta el siguiente código:

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 lanza una excepción "NoSuchFieldError ;: data" en la llamada a GetFieldID. No lo entiendo ... La firma está bien (copiada directamente de javap).

Tenga en cuenta que obtener el ID de campo para una variable más simple, como un corto sin firmar (con firma "S") funciona bien.


Tengo la sensación de que "Lorg/someapp/SomeClass$_data" debería ser "Lorg/someapp/SomeClass$_data;" . Tenga en cuenta el punto y coma.