【问题标题】:GAE + Cloud Storage + Guava = NoSuchMethodError on appspot?GAE + 云存储 + Guava = apppot 上的 NoSuchMethodError?
【发布时间】:2017-07-05 20:35:48
【问题描述】:

将我的 GAE 应用程序部署到 apppot 后,我​​不断收到来自 API 请求的以下错误:NoSuchMethodError: com.google.common.hash.Hashing.crc32c()Lcom/google/common/hash/HashFunction;

在本地运行时我没有收到任何错误。调用时报错:com.google.cloud.storage.StorageOptions.getDefaultInstance().getService().create

我已经尝试过 Guava 版本 18-20,并且正在运行具有以下依赖项的 Java 7:

dependencies {
    appengineSdk 'com.google.appengine:appengine-java-sdk:1.9.53'
    compile 'com.google.appengine:appengine-endpoints:1.9.53'
    compile 'com.google.appengine:appengine-endpoints-deps:1.9.53'
    compile 'com.google.appengine.tools:appengine-gcs-client:0.6'
    compile 'com.google.api-client:google-api-client:1.22.0'
    compile 'com.google.guava:guava:20.0'
    compile 'com.google.cloud:google-cloud-storage:1.0.1'
    compile 'com.googlecode.objectify:objectify:5.1.1'
    compile 'javax.servlet:servlet-api:2.5'
    compile 'org.jsoup:jsoup:1.10.2'
}

感谢您的帮助!

【问题讨论】:

  • 您找到解决方案了吗?
  • Renas,我确实想通了。请参阅下面的答案。

标签: java google-app-engine google-cloud-storage guava


【解决方案1】:

我终于明白了……

我使用的是谷歌云存储库 (com.google.appengine.tools:appengine-gcs-client:0.6),它使用了 guava-jdk5 库,这与我使用的 Guava 版本冲突; HashFunction 在 Guava 的 jdk5 版本中不存在。

解决方案是从 Google Cloud Storage 库导入中排除 guava-jdk5。我的 .gradle 文件的相关部分如下所示:

compile 'com.google.guava:guava:19.0'
compile ('com.google.appengine.tools:appengine-gcs-client:0.6')  {
    exclude group: 'com.google.guava', module: 'guava-jdk5'
}

对于其他人,冲突可能是由不同的库造成的,因此请务必检查库的依赖关系,看看是否与您尝试使用的 Guava 版本冲突。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-07-15
    • 2012-10-15
    • 2015-05-19
    • 2014-06-11
    • 2015-08-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多