从文件API迁移到Google云端存储

时间:2015-06-17 14:18:11

标签: google-app-engine

我试图关注谷歌文档从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)

请帮我解决,或提供指向正确迁移文档的链接。

由于

1 个答案:

答案 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