JNI:NoSuchFieldError错误,显然该字段存在正确的签名

时间:2017-03-22 12:12:14

标签: java android java-native-interface

我有一个java类:

XmlObjectSerializer

我尝试以这种方式使用它:

public class ClassOne implements Serializable {
    private String bField;
    private ArrayList<SomeClass> aField = new ArrayList<SomeClass>();
}

我收到此错误:

jlong
Java_ClassJNI_getArrayContent( JNIEnv* env, jobject this,
                                                jobject argument, jlong handle, jint isFirst) {

    jfieldID fid_bField, fid_aField;
    jclass cls = (*env)->GetObjectClass(env, argument); 
    fid_bField = (*env)->GetFieldID(env, cls, "bField", "Ljava/lang/String;");   
    fid_aField = (*env)->GetFieldID(env, cls, "aField", "Ljava.util.ArrayList;");

...

我已经清理并重建了应用程序,并且我一直这样做。 这是一个始终工作并以某种方式停止的代码,根本没有对类进行任何更改。我做了git重置以确保我没有搞砸到任何地方,但是nada。它仍然会引发同样的错误。

我调试了应用程序,以确保传递的对象是正确的,它们是。该类正确, java.lang.NoSuchFieldError: no field with name='aField' signature='Ljava.util.ArrayList;' in class LClassOne; 被正确选取,但bField会引发错误。

我尝试将aField更改为ArrayList<SomeClass>,但它没有改变任何内容。

我很遗憾,你知道为什么会这样吗?

1 个答案:

答案 0 :(得分:2)

描述符应为&#34; Ljava / util / ArrayList;&#34;。斜线而不是点。