首页 > 解决方案 > 如何获取 Java gDrive api 的类 com.google.common.base.Precondition?

问题描述

我正在尝试通过遵循快速入门教程来获得与 Google Drive API 一起使用的 Java 接口,但是每次运行我的程序时,它都会抛出“NoClassDefFoundError:com/google/common/base/Preconditions”。当我尝试实现 Google CustomSearchEngine API 时也发生了这种情况。

我已经引用了所有带有和不带有源和 javadocs 的 API 类。我还尝试使用 findJAR dot com 来尝试获得先决条件,但收效甚微。

这是我使用的错误引用的代码行。我还在引用代码上方的注释中包含了定义错误行中使用的变量的行。

第 61 行:

/*
private static final JsonFactory JSON_FACTORY = JacksonFactory.getDefaultInstance();

InputStream in = new FileInputStream(clientSecretFilePath);
*/

GoogleClientSecrets clientSecrets = GoogleClientSecrets.load(JSON_FACTORY, new InputStreamReader(in));

第 88 行:

/*
final NetHttpTransport HTTP_TRANSPORT = GoogleNetHttpTransport.newTrustedTransport();
*/

Credential credential = getCredentials(HTTP_TRANSPORT);

错误:

Exception in thread "main" java.lang.NoClassDefFoundError: com/google/common/base/Preconditions
    at com.google.api.client.util.Preconditions.checkNotNull(Preconditions.java:127)
    at com.google.api.client.json.jackson2.JacksonFactory.createJsonParser(JacksonFactory.java:80)
    at com.google.api.client.json.JsonFactory.fromReader(JsonFactory.java:236)
    at com.google.api.client.googleapis.auth.oauth2.GoogleClientSecrets.load(GoogleClientSecrets.java:192)
    at drive.GDrive.getCredentials(GDrive.java:61)
    at drive.GDrive.main(GDrive.java:88)
Caused by: java.lang.ClassNotFoundException: com.google.common.base.Preconditions
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    ... 6 more

它似乎表现得好像缺少一个类,但我在构建配置中引用了来自 Google Drive API 的所有 API 库。我什至尝试从 findjar dot com 获取缺少的类,但进展甚微。

标签: javagoogle-drive-apinoclassdeffounderror

解决方案


从以下链接删除现有依赖项并添加依赖项:

google-api-client-1.23.0

google-oauth-client-jetty-1.23.0

google-api-services-drive-v3-rev110-1.23.0

快乐编码:-)


推荐阅读