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.