【问题标题】:google drive dredit error java.lang.NoSuchMethodError: com.google.api.client.http.HttpRequestFactory.buildRequest谷歌驱动器错误 java.lang.NoSuchMethodError: com.google.api.client.http.HttpRequestFactory.buildRequest
【发布时间】:2012-12-16 17:13:19
【问题描述】:

尝试运行 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) "

【问题讨论】:

  • 无法读取。请通过添加指向上述示例的链接来修改它,说明您的环境并将代码放在代码引号中。
  • 我尝试将 sdk 更新到最新版本,这很有帮助。

标签: java google-app-engine google-drive-api


【解决方案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 文件夹 - 在我的情况下它有所帮助。

【讨论】:

    【解决方案2】:

    我的方法:

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

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

    现在您的库是一致的,您可以开始了!

    【讨论】:

      猜你喜欢
      • 2018-04-13
      • 2016-04-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多