【问题标题】:Google Drive File : com.google.api.client.http.HttpHeaders.getAuthenticateAsList谷歌云端硬盘文件:com.google.api.client.http.HttpHeaders.getAuthenticateAsList
【发布时间】:2014-06-07 17:20:46
【问题描述】:

我们已经实现了一个到目前为止还没有问题的批处理过程。

从今天下午开始,它开始报错,进程结束,剩下要处理数千个文件。

我们可以检查,该进程不会跳转到同一个文件,它是完全随机的。可能是在处理第 200、1000、450000 个文件时...

这是给我们的错误:

java.lang.NoSuchMethodError: com.google.api.client.http.HttpHeaders.getAuthenticateAsList()Ljava/util/List;
at com.google.api.client.auth.oauth2.Credential.handleResponse(Credential.java:245)
at com.google.api.client.http.HttpRequest.execute(HttpRequest.java:992)
at com.google.api.client.googleapis.services.AbstractGoogleClientRequest.executeUnparsed(AbstractGoogleClientRequest.java:410)
at com.google.api.client.googleapis.services.AbstractGoogleClientRequest.executeUnparsed(AbstractGoogleClientRequest.java:343)
at com.google.api.client.googleapis.services.AbstractGoogleClientRequest.execute(AbstractGoogleClientRequest.java:460)
at com.EjecucionExpress.EjecutaExpress.obtenTamanios(EjecutaExpress.java:588)
at com.EjecucionExpress.EjecutaExpress.obtenTamaniosRaid(EjecutaExpress.java:701)
at com.EjecucionExpress.EjecutaExpress.doGet(EjecutaExpress.java:159)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)

.......

在“EjecutaExpress”类的第588行,在“obtenTamanios”方法中,我们有代码:

File file = service.files().get(fileID).execute();

这是我们必须为 Google Drive 获取服务的代码实现。

public static final List<String> SCOPES = Arrays.asList(
            "https://www.googleapis.com/auth/drive",
            "https://www.googleapis.com/auth/userinfo.email",
            "https://www.googleapis.com/auth/userinfo.profile");

            -----------------------------------------------------------

            HttpTransport httpTransport = new NetHttpTransport();
            JacksonFactory jsonFactory = new JacksonFactory();

            GoogleCredential credential = new GoogleCredential.Builder()
                    .setTransport(httpTransport)
                    .setJsonFactory(jsonFactory)
                    .setServiceAccountUser(emailID)
                    .setServiceAccountId(
                            "CLIENT-ID-XXXXXXXXXXXXXX")
                    .setServiceAccountScopes(SCOPES)
                    .setServiceAccountPrivateKeyFromP12File(
                            new java.io.File(
                                    "P12-FILE"))
                    .build();
            credential.refreshToken();

            Drive service = new Drive.Builder(httpTransport, jsonFactory, null)
                    .setHttpRequestInitializer(credential)
                    .setApplicationName("New Drive Service").build();

有人知道为什么会这样吗?

谢谢

【问题讨论】:

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


    【解决方案1】:

    Drive API 正在尝试调用 this function,它仅在 1.16 版之后才可用。

    您使用的是哪个版本的 google-http-java-client?我们有一个类似的问题,通过从 1.15 更新到 1.18 得到了解决。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多