BigQuery: java .lang.NoClassDefFoundError: com / google / api / gax / retry / ExceptionRetryAlgorithm - PullRequest
0 голосов
/ 06 апреля 2020

Я работаю над проектом Google-Dataflow java. Я пытаюсь создать и обновить таблицы BigQuery в процессе инициализации конвейера, поэтому для начала я пытаюсь создать экземпляр BigQuery Java Client следующим образом:

 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

Это мой пом. 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>

Чего мне не хватает?

1 Ответ

1 голос
/ 06 апреля 2020

Из-за ошибки это выглядит как баночка, содержащая com.google.api.gax.retry.ExceptionRetryAlgorithm. java класс отсутствует.

Быстрый поиск в Google заставил меня добавить зависимость ниже pom. Этот gax jar содержит класс ExceptionRetryAlgorithm.

    <dependency>
        <groupId>com.google.api</groupId>
        <artifactId>gax</artifactId>
        <version>0.14.0</version>
    </dependency>

надеюсь, добавление вышеуказанной зависимости к вашему pom должно решить проблему.

С уважением, Shuvadip

...