尝试编译和使用Apache Beam Cassandra JAR的快照。似乎构建不包含JAR中的Guava依赖项。当其他代码使用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
任何人都知道如何做到这一点?
因此,您似乎需要添加以下依赖项以使其在最新版本中运行。希望它可以帮助某人。
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'