java—构建ApacheBeam cassandra jar时没有重新打包的依赖项

pkwftd7m  于 2021-06-10  发布在  Cassandra
关注(0)|答案(1)|浏览(376)

尝试编译并使用apachebeam cassandrajar的快照。似乎构建没有将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

我在jar中找不到使gradle构建包成为所需依赖项的方法。
使用命令生成:

gradle -p ./sdks/java/io/cassandra shadowJar

有人知道怎么做吗?
更新:显然几个月前beam使用Guava的方式已经改变了。github.com/apache/beam/pull/7494—所以当我在本地构建最新版本时,它找不到org.apache.beam.vendor.guava.v20\u 0.com.google.common由org.apache.beam.sdk.options.pipelineoptionsfactory导入

okxuctiv

okxuctiv1#

因此,似乎需要添加以下依赖项才能使其在最新版本下工作。希望它能帮助别人。 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'

相关问题