#java #gradle #cassandra #guava #apache-beam
#java #gradle #cassandra #guava #apache-beam
Вопрос:
Пытаюсь скомпилировать и использовать снимок для Apache Beam Cassandra JAR. Похоже, что сборка не упаковывает зависимости Guava в JAR. Это приводит к сбою компиляции, когда JAR используется другим кодом — смотрите следующее исключение:
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/beam/vendor/guava/v20_0/com/google/common/base/Preconditions
at org.apache.beam.sdk.io.cassandra.CassandraIO$Read.withHosts(CassandraIO.java:180)
at org.apache.beam.examples.JoinFromCassandraToCassandra.main(JoinFromCassandraToCassandra.java:26)
Caused by: java.lang.ClassNotFoundException: org.apache.beam.vendor.guava.v20_0.com.google.common.base.Preconditions
at java.net.URLClassLoader.findClass(URLClassLoader.java:382)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:349)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
... 2 more
Я все равно не смог найти, чтобы сделать пакет сборки gradle необходимым для зависимостей в JAR.
Сборка с помощью команды:
gradle -p ./sdks/java/io/cassandra shadowJar
Кто-нибудь знает, как это можно сделать?
ОБНОВЛЕНИЕ: Итак, по-видимому, несколько месяцев назад способ, которым Beam использует Guava, изменился. github.com/apache/beam/pull/7494 — Поэтому, когда я собираю последнюю версию локально, она не может найти org.apache.beam.vendor.guava.v20_0.com.google.common, импортированный org.apache.beam.sdk.options.PipelineOptionsFactory
Комментарии:
1. ОБНОВЛЕНИЕ: Итак, по-видимому, несколько месяцев назад способ, которым Beam использует Guava, изменился. github.com/apache/beam/pull/7494 — Поэтому, когда я создаю последнюю версию локально, она не может найти,
org.apache.beam.vendor.guava.v20_0.com.google.common
импортированнуюorg.apache.beam.sdk.options.PipelineOptionsFactory
.
Ответ №1:
Итак, похоже, вам нужно добавить следующие зависимости, чтобы заставить его работать в последней версии. Надеюсь, это кому-то поможет.
compile group: 'org.apache.beam', name: 'beam-vendor-guava-20_0', version: '0.1'
compile group: 'org.apache.beam', name: 'beam-vendor-grpc-1_13_1', version: '0.2'