我试图通过遵循QuickStart教程来获得与Google Drive API一起使用的Java界面,但是每次我运行程序时都会投掷" NoclassDeffoundError:com/commo/common/common/base(/先决条件。"当我尝试实施Google customearchengine 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那里获得缺失的课程,但进展几乎没有进展。
删除现有依赖项并从下面添加依赖项:
google-api-client-1.23.0
google-oauth-client-jetty-1.23.0
google-api-services-drive-v3-rev110-1.23.0
快乐编码: - (
我在为Android实施Payu SDK时遇到了相同的问题。解决方案是为 android 添加guava依赖项,而不是 JRE :
implementation("com.google.guava:guava:28.1-android")
有关更多信息,请参阅存储库或检查Android Guava Wiki,最好是前提条件
我还建议仔细研究Guava的Proguard规则,以将您在项目中不使用的所有内容排除在构建中。
我创建了一个遵循Quickstart教程的小项目,没有任何问题。
https://github.com/lssilva/googledriveapi/
它对我来说很好,我没有提交凭据,但是如果您替换为您的凭据,则应如文档所述工作。
git clone https://github.com/lssilva/googleDriveApi.git
gradle run
如果接受的答案对任何人都不起作用。
也可以在:
上获得前提条件https://mvnrepository.com/artifact/com.google.api.client/google-api-client-repackaged-com-google-common-base
implementation("com.google.api.client:google-api-client-repackaged-com-google-common-base:1.2.3-alpha")
它似乎对我有效。