我试图关注谷歌文档从File API(即将过时)迁移到Google云端存储。
我跟随(使用eclipse)https://cloud.google.com/appengine/docs/java/googlecloudstorageclient/migrate#migration(写得不好 - 其他许多写得不好的文档)
我使用git从https://cloud.google.com/appengine/docs/java/googlecloudstorageclient/download下载了客户端代码,并使用ant构建它。
比我复制了以下的jar文件appengine-gcs-client.jar 番石榴15.0.jar joda-time-2.3.jar
我从我的项目中删除了一些旧的番石榴罐。
将PortOfFilesAPIGuestbookServlet复制到我的项目
添加到web.xml
<servlet>
<servlet-name>PortOfFilesAPIGuestbookServlet</servlet-name>
<servlet-class>com.google.appengine.demos.PortOfFilesAPIGuestbookServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>PortOfFilesAPIGuestbookServlet</servlet-name>
<url-pattern>/tst1</url-pattern>
</servlet-mapping>
并运行示例
结果:
/ tst1 java.lang.NoSuchMethodError的错误: com.google.common.base.Stopwatch.createUnstarted()LCOM /谷歌/普通/碱/秒表; 在 com.google.appengine.tools.cloudstorage.RetryHelper.runWithRetries(RetryHelper.java:156) 在 com.google.appengine.tools.cloudstorage.GcsServiceImpl.createOrReplace(GcsServiceImpl.java:70) 在 com.google.appengine.demos.PortOfFilesAPIGuestbookServlet.doGet(PortOfFilesAPIGuestbookServlet.java:41) 在javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
请帮我解决,或提供指向正确迁移文档的链接。
由于
答案 0 :(得分:0)
首先,在eclipse中,从Build路径中删除jar是不够的 - 你必须从war / WEB-INF / lib中删除它。
否则它仍将在运行时使用(构建路径仅用于编译时)
在我的情况下,我不得不从我的lib中删除旧的番石榴罐。
之后我还有一些遗漏问题 - 我用http://grepcode.com/找到了相关的罐子。
我最终从我的lib中删除了google-collect-1.0-rc1.jar,guava-11.0.2.jar,servlet-api-2.3.jar
注意: 为了使代码能够在google服务器上运行,我必须将所有jar从appengine-gcs-client-read-only / java / dist复制到项目lib