比如我定义了两个类clsA与clsB,其中clsB中包含一个clsA的对象数组:
class clsA
{
 ....
}
class clsB
{
 int num;
 clsA[] array_clsA;
}现在要在JNI接口中取得array_clsA,我做了如下处理:// 取得类:
jclass Class_ clsA= (*env)->FindClass(env, "com/zdc/android/navi/clsA");
jclass Class_ clsB= (*env)->FindClass(env, "com/zdc/android/navi/clsB");// 取得类clsB中的数组成员array_clsA:
jfieldID jField1= (*env)->GetFieldID(env, ClassHighWayGuideInfo,"array_clsA","[Lcom/zdc/android/navi/clsA;");请问取得jField1的方式正确吗,编译时能通过,但程序运行时老挂掉,我怀疑是取得jField1的方式不对,请高手指点下,多谢了!

解决方案 »

  1.   

    // 取得类:
    jclass Class_clsA= (*env)->FindClass(env, "com/zdc/android/navi/clsA");
    jclass Class_clsB= (*env)->FindClass(env, "com/zdc/android/navi/clsB");// 取得类clsB中的数组成员array_clsA:
    jfieldID jField1= (*env)->GetFieldID(env, Class_clsB,"array_clsA","[Lcom/zdc/android/navi/clsA;"); ClassHighWayGuideInfo clsB 实例吗? 传class
      

  2.   

    jclass Class_clsB= env->FindClass("com/zdc/android/navi/clsB"); jfieldID jField1= env->GetFieldID(Class_clsB,"array_clsA","(Lcom/zdc/android/navi/clsA;)V"); 主要问题是最后的字段签名 (Lcom/zdc/android/navi/clsA;)V 一定要设置正确, 关于字段签名可以研究一下: JAVA2核心技术 卷2高级特性, 第11章