2017-03-22 2 views
0

で存在している私はJavaのクラスを持っているNoSuchFieldErrorエラーJNI:はっきりフィールドが正しい署名

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;"); 

... 

私はこのエラーを取得します:

java.lang.NoSuchFieldError: no field with name='aField' signature='Ljava.util.ArrayList;' in class LClassOne; 

私はすでにアプリケーションをクリーニングして再構築しており、これを取得しています。 これは、常に動作していて何とか停止したコードであり、クラスにはまったく変更はありません。私はどこにでも釘付けにならなかったことを確かめるためにリセットしましたが、nada。それでも同じエラーが発生します。

私は、渡されたオブジェクトが正しいことを確認するために、アプリケーションをデバッグしました。クラスが正しく、bFieldは正しくピックアップされますが、aFieldはエラーをスローします。

ArrayList<SomeClass>ArrayListに変更しようとしましたが、何も変更されていません。

私はそれでかなり迷っています。どうしてこれが起こるか考えていますか?

答えて

2

記述子は "Ljava/util/ArrayList;"にする必要があります。ドットの代わりにスラッシュ。

+0

神様..あなたは正しいです!もちろん。面白いこと:1つのタブレット[Android 7]でドットで動作し、別のタブレットでは動作しません[Android 4] – Krystian

関連する問題