AndroidStudio更新后的Android Jackson NoSuchMethodError

时间:2017-03-04 19:03:03

标签: java android json jackson

我已经将我的AndroidStudio更新到版本3.3,我正在使用Jackson来解析JSON。在此更新之前,我的版本是2.8.0。 AndroidStudio更新后,我收到下面的NoSuchMethodError:

E/AndroidRuntime: FATAL EXCEPTION: main
                     Process: org.madebyalex.myperiod, PID: 18261
                     java.lang.NoSuchMethodError: No virtual method
                     writeStartObject(Ljava/lang/Object;)V in class 
                     Lcom/fasterxml/jackson/core/JsonGenerator; or its 
                     super classes (declaration of 
                     'com.fasterxml.jackson.core.JsonGenerator' appears 
                      in /data/app/org.madebyalex.myperiod-
                     1/split_lib_dependencies_apk.apk:classes6.dex)
                     at com.fasterxml.jackson.databind.ser.BeanSerializer.serialize(BeanSerializer.java:151)
                     at com.fasterxml.jackson.databind.ser.DefaultSerializerProvider.serializeValue(DefaultSerializerProvider.java:292)
                     at com.fasterxml.jackson.databind.ObjectWriter$Prefetch.serialize(ObjectWriter.java:1429)
                     at com.fasterxml.jackson.databind.ObjectWriter._configAndWriteValue(ObjectWriter.java:1158)
                     at com.fasterxml.jackson.databind.ObjectWriter.writeValue(ObjectWriter.java:971)
                     at org.madebyalex.myperiod.JsonUtils.writeProfileInfo(JsonUtils.java:274)

所以我将我的Jackson版本更新为2.8.7,清除Gradle缓存文件和重建。问题仍然存在。 这是我的gradle文件:

dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
testCompile 'junit:junit:4.12'
   compile 'com.android.support:support-v4:25.2.0'
   compile 'com.android.support:design:25.2.0'
   compile 'com.android.support:appcompat-v7:25.2.0'
   compile 'com.android.support:recyclerview-v7:25.2.0'
   compile 'com.android.support:cardview-v7:25.2.0'
   compile files('libs/jackson-core-2.8.7.jar')
   compile files('libs/jackson-databind-2.8.7.jar')
   compile files('libs/jackson-annotations-2.8.0.jar')
}

有一件事我注意到即使在重建和缓存删除之后,jackson核心版仍然在AndroidStudio的“外部库”参考文件夹中的2.7.4版本中。这就是名字:jackson-core-2.7.4。

我搜索了一些关于SO的llinks并发现了这个: ObjectMapper java.lang.NoSuchMethodError 但没有成功。

1 个答案:

答案 0 :(得分:0)

问题解决了。我断言更新我的gradle文件的罐子的最新版本反而指向我的本地罐子,AndroidStudio直接下载到maven repo:

compile group: 'com.fasterxml.jackson.core', name: 'jackson-core', version: '2.8.7'
compile group: 'com.fasterxml.jackson.core', name: 'jackson-databind', version: '2.8.7'
compile group: 'com.fasterxml.jackson.core', name: 'jackson-annotations', version: '2.8.7'

我以前没见过这个错误。