【发布时间】:2016-06-11 22:34:54
【问题描述】:
我正在使用 grails 2.5,并且在我的项目中使用 grails spring websockets,一切正常。现在,由于我想使用 Google 实现登录,因此将 maven 依赖项添加到 BuildConfig 以用于 google api 客户端:
compile 'com.google.api-client:google-api-client:1.20.0'
现在,当我运行应用程序时出现此错误
java.lang.NoSuchMethodError: com.fasterxml.jackson.core.JsonFactory.requiresPropertyOrdering()
这是因为 spring websocket 插件和 google api 客户端正在使用的 Jackson 库之间存在冲突。 正如我所看到的,谷歌 api 似乎使用的是过时的杰克逊版本。 是否可以排除从 Maven 依赖项导入的杰克逊?我知道可以从 grails 插件中添加“排除”。但它似乎不适用于 maven 依赖项,我添加了这个但没有运气:
compile 'com.google.api-client:google-api-client:1.20.0', { excludes "com.google.api-client:google-api-client-jackson2:1.20.0" }
提醒一下,google api 客户端依赖在 BuildConfig 中的 'dependencies' 组下,它使用 mavenCentral() 来获取依赖项,而不是在 'plugins' 下。
有人知道我该如何解决这个问题吗?
谢谢
编辑:可能不太理想,但我可以通过添加最新的杰克逊依赖项来解决这个问题
compile 'com.google.api-client:google-api-client:1.20.0', {
excludes "com.google.api-client:google-api-client-jackson2:1.20.0"
}
compile 'com.fasterxml.jackson.core:jackson-core:2.7.2'
【问题讨论】:
-
试试
excludes 'google-api-client-jackson2'而不是全名。它适用于我们没有问题的简单依赖项。依赖关系必须定义在dependencies{}而不是plugins{} -
@nelson687 你有没有找到答案?