【问题标题】:NoSuchMethod error on Google App EngineGoogle App Engine 上的 NoSuchMethod 错误
【发布时间】:2017-08-11 00:01:59
【问题描述】:

我的 Google App Engine 服务器运行:

  • Firebase 管理 SDK
  • Google Cloud Endpoints v2

最近更新到 Endpoints v2 后(不确定是否相关),我的移动应用程序在服务器上收到此错误:

com.google.api.server.spi.SystemService invokeServiceMethod: exception occurred while calling backend method
java.lang.NoSuchMethodError: com.google.common.base.Preconditions.checkState(ZLjava/lang/String;Ljava/lang/Object;)V
at com.google.firebase.FirebaseApp.checkNotDeleted(FirebaseApp.java:314)
at com.google.firebase.FirebaseApp.getOptions(FirebaseApp.java:260)
at com.google.firebase.auth.FirebaseAuth.<init>(FirebaseAuth.java:74)
at com.google.firebase.auth.FirebaseAuth.<init>(FirebaseAuth.java:61)
at com.google.firebase.auth.FirebaseAuth.<init>(FirebaseAuth.java:52)
at com.google.firebase.auth.FirebaseAuth$FirebaseAuthService.<init>(FirebaseAuth.java:316)
at com.google.firebase.auth.FirebaseAuth.getInstance(FirebaseAuth.java:98)
at com.google.firebase.auth.FirebaseAuth.getInstance(FirebaseAuth.java:85)
at com.project.apis.UserAPI.verifyUserIDToken(MyAPI.java:100)

谁能给点建议?其他报告建议在我的pom.xml 中更新 Guava 依赖项,但我什至没有使用 Guava:

【问题讨论】:

    标签: java google-app-engine firebase google-cloud-endpoints firebase-admin


    【解决方案1】:

    当类路径中有 2 个不兼容的 guava 版本时会发生这种情况。 Firebase 使用一个版本(v20.0),而 Google App Engine 库使用旧版本(我相信是 v18.0)。您可以使用mvn dependency:tree 命令检查依赖树,然后在旧版本中添加排除规则。

    【讨论】:

    • 依赖树只列出 Guava 一次(com.google.guava:guava:jar:19.0:compile)。会不会是另一个问题?
    • Firebase 需要 20.0。尝试将其添加到类路径中,然后删除 19.0。
    • 它仍然以某种方式绑定到 19.0 版本。你能发布你的依赖树吗?
    • 还要确保target/ 目录中的网络存档(部署到 App Engine 的工件)在 WEB-INF/lib 中只有 guava 20.0。 Maven 因缓存这些东西而臭名昭著,您可能需要运行 mvn clean 来核对旧工件,并使用 guava 20.0 重建项目。
    猜你喜欢
    • 2012-01-25
    • 1970-01-01
    • 1970-01-01
    • 2011-08-11
    • 2013-10-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-16
    相关资源
    最近更新 更多