google drive dredit error java.lang.NoSuchMethodError:com.google.api.client.http.HttpRequestFactory.buildRequest

时间:2012-12-16 17:13:19

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

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

012-12-16 08:52:01.050 Uncaught exception from 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;
    at com.google.api.client.googleapis.services.AbstractGoogleClientRequest.buildHttpRequest(AbstractGoogleClientRequest.java:290)
    at com.google.api.client.googleapis.services.AbstractGoogleClientRequest.executeUnparsed(AbstractGoogleClientRequest.java:396)
    at com.google.api.client.googleapis.services.AbstractGoogleClientRequest.executeUnparsed(AbstractGoogleClientRequest.java:328)
    at com.google.api.client.googleapis.services.AbstractGoogleClientRequest.execute(AbstractGoogleClientRequest.java:449)
    at it.contextsolutions.drived.CredentialMediator.getUserInfo(CredentialMediator.java:211)
    at it.contextsolutions.drived.CredentialMediator.getActiveCredential(CredentialMediator.java:312)
    at it.contextsolutions.drived.DrEditServlet.getCredentialMediator(DrEditServlet.java:98)
    at it.contextsolutions.drived.DrEditServlet.getClientId(DrEditServlet.java:143)
    at it.contextsolutions.drived.StartPageServlet.doGet(StartPageServlet.java:46)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:617)     
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)     
    at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:511)
    at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1166)
    "

2 个答案:

答案 0 :(得分:1)

问题实际上drEdit样本仍然有GAE 1.6.3版本库,并且您从较新版本添加了GAE API(和drive / oauth2 api)。

只需在web / WEB-INF / lib下查看项目的来源 - 您将拥有许多相同的jars,但版本不同:

  • appengine-api-xxx-1.6.3(来自drEdit来源)和appengine-api-xxx-1.7.4(由Eclipse中的谷歌插件添加)
  • 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文件夹 - 在我看来它有帮助。

答案 1 :(得分:0)

我的工作方式:

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

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

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