如何为 Java gDrive api 获取 class com.google.common.base.Precondition?
How do I get class com.google.common.base.Precondition for Java gDrive api?
我正在按照快速入门教程尝试使用 Google Drive API 获得 Java 界面,但每次我 运行 我的程序都会抛出"NoClassDefFoundError: com/google/common/base/Preconditions." 当我尝试实施 Google CustomSearchEngine API.
时也发生了这种情况
我已经引用了所有 API class 的内容,无论是否附有来源和 javadoc。我也曾尝试使用 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
它看起来好像缺少 class,但我在构建配置中引用了 Google Drive 的 API 中的所有 API 库。我什至尝试从 findjar dot com 中获取丢失的 class,但进展甚微。
我按照快速入门教程创建了一个小项目,没有任何问题。
https://github.com/lssilva/googleDriveApi/
它对我来说工作得很好,我没有提交凭据,但如果你用你的替换,它应该按照文档中的描述工作。
git clone https://github.com/lssilva/googleDriveApi.git
gradle run
删除现有依赖项并从以下链接添加依赖项:
google-oauth-client-jetty-1.23.0
google-api-services-drive-v3-rev110-1.23.0
快乐编码:-)
我在实施 PayU SDK for Android 时遇到了同样的问题。
解决方案是为 android 添加番石榴依赖项,而不是 jre:
implementation("com.google.guava:guava:28.1-android")
有关它的更多信息,请参阅 repository or check the Android guava wiki, preferably Preconditions
我还建议查看 Proguard rules for Guava 以从构建中排除项目中不使用的所有内容。
我正在按照快速入门教程尝试使用 Google Drive API 获得 Java 界面,但每次我 运行 我的程序都会抛出"NoClassDefFoundError: com/google/common/base/Preconditions." 当我尝试实施 Google CustomSearchEngine API.
时也发生了这种情况我已经引用了所有 API class 的内容,无论是否附有来源和 javadoc。我也曾尝试使用 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
它看起来好像缺少 class,但我在构建配置中引用了 Google Drive 的 API 中的所有 API 库。我什至尝试从 findjar dot com 中获取丢失的 class,但进展甚微。
我按照快速入门教程创建了一个小项目,没有任何问题。
https://github.com/lssilva/googleDriveApi/
它对我来说工作得很好,我没有提交凭据,但如果你用你的替换,它应该按照文档中的描述工作。
git clone https://github.com/lssilva/googleDriveApi.git
gradle run
删除现有依赖项并从以下链接添加依赖项:
google-oauth-client-jetty-1.23.0
google-api-services-drive-v3-rev110-1.23.0
快乐编码:-)
我在实施 PayU SDK for Android 时遇到了同样的问题。 解决方案是为 android 添加番石榴依赖项,而不是 jre:
implementation("com.google.guava:guava:28.1-android")
有关它的更多信息,请参阅 repository or check the Android guava wiki, preferably Preconditions
我还建议查看 Proguard rules for Guava 以从构建中排除项目中不使用的所有内容。