java - BigQuery:java.lang.NoClassDefFoundError:com/google/api/gax/retrying/ExceptionRetryAlgorithm
问题描述
我正在从事一个 Google-Dataflow java 项目。我正在尝试在管道的初始化中创建和更新 BigQuery 表,因此为了开始我尝试以这种方式实例化 BigQuery Java 客户端:
BigQuery bigquery = BigQueryOptions.getDefaultInstance().getService();
运行时,它给我带来了以下异常:
Exception in thread "main" java.lang.NoClassDefFoundError: com/google/api/gax/retrying/ExceptionRetryAlgorithm
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:756)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:468)
at java.net.URLClassLoader.access$100(URLClassLoader.java:74)
at java.net.URLClassLoader$1.run(URLClassLoader.java:369)
at java.net.URLClassLoader$1.run(URLClassLoader.java:363)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:362)
at java.lang.ClassLoader.loadClass(ClassLoader.java:418)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:352)
at java.lang.ClassLoader.loadClass(ClassLoader.java:351)
at com.google.cloud.BaseService.<clinit>(BaseService.java:48)
at com.google.cloud.bigquery.BigQueryOptions$DefaultBigQueryFactory.create(BigQueryOptions.java:46)
at com.google.cloud.bigquery.BigQueryOptions$DefaultBigQueryFactory.create(BigQueryOptions.java:40)
at com.google.cloud.ServiceOptions.getService(ServiceOptions.java:426)
at com.mydomain.Analysis.main(Analysis.java:359)
Caused by: java.lang.ClassNotFoundException: com.google.api.gax.retrying.ExceptionRetryAlgorithm
at java.net.URLClassLoader.findClass(URLClassLoader.java:382)
at java.lang.ClassLoader.loadClass(ClassLoader.java:418)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:352)
at java.lang.ClassLoader.loadClass(ClassLoader.java:351)
... 17 more
这是我的 pom.xml:
<properties>
<beam.version>2.19.0</beam.version>
</properties>
<dependencies>
<!-- https://mvnrepository.com/artifact/org.apache.commons/commons-collections4 -->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-collections4</artifactId>
<version>4.0</version>
</dependency>
<dependency>
<groupId>com.google.cloud</groupId>
<artifactId>google-cloud-bigquery</artifactId>
<version>1.110.0</version>
</dependency>
<!-- Beam -->
<dependency>
<groupId>org.apache.beam</groupId>
<artifactId>beam-sdks-java-core</artifactId>
<version>${beam.version}</version>
</dependency>
<dependency>
<groupId>org.apache.beam</groupId>
<artifactId>beam-sdks-java-io-google-cloud-platform</artifactId>
<version>${beam.version}</version>
<exclusions>
<exclusion>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.apache.beam</groupId>
<artifactId>beam-sdks-java-extensions-google-cloud-platform-core</artifactId>
<version>${beam.version}</version>
</dependency>
<dependency>
<groupId>org.apache.beam</groupId>
<artifactId>beam-runners-google-cloud-dataflow-java</artifactId>
<version>${beam.version}</version>
</dependency>
<dependency>
<groupId>org.apache.beam</groupId>
<artifactId>beam-sdks-java-io-jdbc</artifactId>
<version>${beam.version}</version>
</dependency>
</dependencies>
我错过了什么?
解决方案
从错误看来,缺少一些包含 com.google.api.gax.retrying.ExceptionRetryAlgorithm.java 类的 jar。
一个快速的谷歌搜索指示我将以下依赖项添加到 pom.xml 中。这个 gax jar 包含 ExceptionRetryAlgorithm 类。
<dependency>
<groupId>com.google.api</groupId>
<artifactId>gax</artifactId>
<version>0.14.0</version>
</dependency>
希望将上述依赖项添加到您的 pom 中,应该可以解决问题。
问候,舒瓦迪普
推荐阅读
- java - 执行 get 时,Room DB 正在更改项目的顺序
- linux-kernel - find_dynamic_major 函数
- java - 精通java
- angular - RxJS6(角度 6)- node_modules/rxjs/Rx.d.ts(1,15) 中的错误:错误 TS2307:找不到模块 'rxjs-compat'
- .net-core - Cake build NuGetPush 抛出权限被拒绝
- angular - Angular 4轮询数据而不覆盖正在更新的项目
- ios - Swift 4 中的额外参数调用
- ios - 在应用状态“Developer Removed From Sale”后提交新的二进制文件
- bash - 我将如何编写这个简单的基于 Bash 变量的方法?
- php - 如何使用服务器修改 Google Calendar API 上的事件