我正在尝试将Firebase添加到使用eclipse构建的旧java appengine项目中。当我尝试调用FirebaseApp.initializeApp(选项)时,我在运行超级开发模式的本地服务器上遇到此错误(服务器端错误,而不是客户端):
Caused by: java.lang.NoSuchMethodError: com.google.common.base.Platform.stringIsNullOrEmpty(Ljava/lang/String;)Z
at com.google.common.base.Strings.isNullOrEmpty(Strings.java:67)
at com.google.firebase.FirebaseApp.<init>(FirebaseApp.java:79)
at com.google.firebase.FirebaseApp.initializeApp(FirebaseApp.java:168)
at com.google.firebase.FirebaseApp.initializeApp(FirebaseApp.java:155)
at com.google.firebase.FirebaseApp.initializeApp(FirebaseApp.java:142)
我在eclipse Neon 4.6.3上使用这些库:
我已经加载了番石榴源jar并在Strings.java:67上设置了一个断点,它点击了该行,eclipse说它正在从预期的guava jar文件中提取它。但是如果它似乎无法找到Platform.string.IsNullOrEmpty方法,即使我在eclipse jar爆炸视图中看到它,也应该这样做。
我尝试过类似问题的guava20.0。
什么可能导致jvm在它自己的jar文件中找不到该方法?有任何调试建议吗?
答案 0 :(得分:0)
我能够通过删除所有WEB-INF / lib jar,添加库引用并将它们全部更新到最新版本来解决这个问题。我不确定哪个库的组合导致了问题,但为了将来的参考,我最终得到了以下配置:
这套罐子:
appengine-api-1.0-sdk-1.9.53.jar google-api-client-servlet-1.22.0.jar gwt-servlet.jar
appengine-api-labs.jar google-http-client-1.22.0.jar httpclient-4.0.1.jar
appengine-endpoints-deps.jar google-http-client-appengine-1.22.0.jar httpcore-4.0.1.jar
appengine-endpoints.jar google-http-client-jackson2-1.22.0.jar jackson-core-2.1.3.jar
appengine-jsr107cache-1.9.53.jar google-http-client-jdo-1.22.0.jar java-json.jar
asm-5.0.4.jar google-oauth-client-1.22.0.jar jdo-api-3.0.1.jar
firebase-admin-4.1.7.jar google-oauth-client-appengine-1.22.0.jar jsr107cache-1.1.jar
gin-2.1.2.jar google-oauth-client-servlet-1.22.0.jar jta-1.1.jar
google-api-client-1.22.0.jar guava-20.0.jar log4j.jar
google-api-client-appengine-1.22.0.jar gwt-gae-channel-2.0.0.jar twitter4j-core-4.0.4.jar