2013-03-20 72 views
0

我的java类“PMS”中有一个HashMap变量“AA”。现在我想在cpp文件中访问“AA”。我使用JNI来解决这个问题。这里是我的代码:在C++中访问HashMap变量

jclass clazz=env->FindClass("com/pms/PMS"); 
jfieldID field=env->GetStaticFieldID(clazz, "AA", "Ljava/util/HashMap"); 
jobject objPackages=env->GetStaticObjectField(clazz,field); 

,但我得到的 “java /郎/ NoSuchFieldError”,那就是 “AA” 无法找到。然后我试试这个:

jclass clsPackages=env->FindClass("com/pms/PMS$AA"); 

这一次我得到的 “java /郎/ NoClassDefFoundError错误”。我应该怎么做?

+0

请提供来自Java源的字段'AA'的声明。它真的被宣布为“静态”吗? – jop 2013-03-20 08:59:36

回答

0

我想在你的代码的第二行应该是:在最后

jfieldID field=env->GetStaticFieldID(clazz, "AA", "Ljava/util/HashMap;");

分号。它是语法的一部分。我忘记了为什么。

a

+0

是的,它工作。我很粗心,我忘记了分号。非常感谢你。 – Caroline 2013-03-21 02:20:43

+0

不客气。很高兴我能帮上忙。 – Alain 2013-03-21 13:47:43