AndroidStudio更新后的Android Jackson NoSuchMethodError

Posted

技术标签:

【中文标题】AndroidStudio更新后的Android Jackson NoSuchMethodError【英文标题】:Android Jackson NoSuchMethodError after AndroidStudio update 【发布时间】:2017-07-24 19:33:21 【问题描述】:

我已经将我的 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 上搜索了一些链接,发现了这个: ObjectMapper java.lang.NoSuchMethodError 但没有成功。

【问题讨论】:

我不认为这会导致问题,但您为什么使用不匹配的jackson-annotations 版本? 最新的jackson-annotations就是这个版本。至少在回购中。 AMD 正如你所说,这不是问题的原因。 好的。我创建了最新版本的 LinkedIn:mvnrepository.com/artifact/com.fasterxml.jackson.core/…。不幸的是,杰克逊核心回购没有包含这个链接。问题仍然存在。 【参考方案1】:

问题解决了。我断言最新版本的 jars 将我的 gradle 文件改为指向我的本地 jars,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'

我以前没见过这个是我的错误。

【讨论】:

以上是关于AndroidStudio更新后的Android Jackson NoSuchMethodError的主要内容,如果未能解决你的问题,请参考以下文章

长按列表视图后的操作(Android Studio)

如何更新Android Studio

android studio怎么更新android-ndk

android studio怎样运行打包后的apk

androidstudio怎么创建LearnKotlin

android studio安装后的问题