[JNI] Unexpected error, à l'intérieur de libjvm
Bonjour,
Un morceau de code relativement simple provoque une erreur :
Code:
1 2 3 4 5 6 7 8 9 10 11
| JNIEXPORT void JNICALL Java_Test_testFunction
(JNIEnv *env, jobject obj)
{
jclass cls = env->GetObjectClass(obj);
jfieldID fid = env->GetFieldID(cls, "interfaceData", "I");
env->SetIntField(cls, fid, (jint)3);
jclass cls2 = env->GetObjectClass(obj);
jfieldID fid2 = env->GetFieldID(cls2, "interfaceData", "I");
jint i = env->GetIntField(cls, fid);
} |
Il écrit quelque chose dans un champ et tente de le lire. La lecture provoque une erreur, apparement sur l'appel de GetFieldID d'après le log produit par la JVM.
Code:
1 2
| V [libjvm.so+0x2d06c6]
C [libTest.so+0x1c06] ZN10_Jv_JNIEnv10GetFieldIDEP8__jclassPKcS3_+0x2e |
Il y a peut être quelque chose d'évident, mais je ne vois pas quoi.
Si le fait que les appels soient doubles (cls-cls2, fid-fid2, etc.) vous gênent, ils sont en fait à des endroits différents dans le vrai code, mais les mettre l'un après l'autre provoque une erreur identique, que je ne comprends toujours pas.
Une idée ?
Blustuff.