2

尝试运行 Google 驱动器示例时,我总是得到下面解释的错误。我检查了配置,它看起来是正确的。使用了最新版本的 appengine eclipse 插件。抛出的错误看起来好像方法:com.google.api.client.http.HttpRequestFactory.buildRequest 在运行时不可用。这是一个不推荐使用的方法,但在编译时没有给出错误。有没有人遇到过同样的情况?

012-12-16 08:52:01.050 未捕获的 servlet 异常

    java.lang.NoSuchMethodError: com.google.api.client.http.HttpRequestFactory.buildRequest(Ljava/lang/String;Lcom/google/api/client/http/GenericUrl;Lcom/google/api/client/http/HttpContent; )Lcom/google/api/client/http/HttpRequest;
    在 com.google.api.client.googleapis.services.AbstractGoogleClientRequest.buildHttpRequest(AbstractGoogleClientRequest.java:290)
    在 com.google.api.client.googleapis.services.AbstractGoogleClientRequest.executeUnparsed(AbstractGoogleClientRequest.java:396)
    在 com.google.api.client.googleapis.services.AbstractGoogleClientRequest.executeUnparsed(AbstractGoogleClientRequest.java:328)
    在 com.google.api.client.googleapis.services.AbstractGoogleClientRequest.execute(AbstractGoogleClientRequest.java:449)
    在 it.contextsolutions.drived.CredentialMediator.getUserInfo(CredentialMediator.java:211)
    在 it.contextsolutions.drived.CredentialMediator.getActiveCredential(CredentialMediator.java:312)
    在 it.contextsolutions.drived.DrEditServlet.getCredentialMediator(DrEditServlet.java:98)
    在 it.contextsolutions.drived.DrEditServlet.getClientId(DrEditServlet.java:143)
    在 it.contextsolutions.drived.StartPageServlet.doGet(StartPageServlet.java:46)
    在 javax.servlet.http.HttpServlet.service(HttpServlet.java:617)     
    在 javax.servlet.http.HttpServlet.service(HttpServlet.java:717)     
    在 org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:511)
    在 org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1166)
    "
4

2 回答 2

1

问题实际上是 drEdit 示例仍然具有 GAE 1.6.3 版本库,并且您从较新版本添加了 GAE API(和驱动器/oauth2 api)。

只需在 web/WEB-INF/lib 下检查您的项目的源代码 - 您将有许多相同 jar 的副本,但版本不同:

  • appengine-api-xxx-1.6.3(从 drEdit 源获得)和 appengine-api-xxx-1.7.4(由 Eclipse 中的 Google 插件添加)
  • google-api-client-xxx-1.10.3-beta.jar(来自 drEdit 源)和 google-api-client-xxx-1.12.0-beta(由 Eclipse 插件添加)
  • google-api-services-xxx-1.7.2-beta(来自 drEdit 源)和 google-api-services-xxx-1.12.0-beta(由 Eclipse 插件添加)。

通过删除旧版本的 jar 来简单地清理你的 web/WEB-INF/lib 文件夹 - 在我的情况下它有帮助。

于 2013-02-10T19:28:28.570 回答
0

我让它工作的方法:

查看 google-drive-sdk-samples,将其复制到您的工作区,但删除 WEB-INF/lib 中的所有过时库。

添加 Drive-SDK 和 OAuth2 API,这将自动将所有需要的库文件添加到 WEB-INF/lib。

现在你的图书馆是一致的,你很高兴!

于 2013-04-20T18:59:37.003 回答