NoSuchMethodError与Guava、GCP云存储和数据税

x6yk4ghg  于 2022-10-21  发布在  Cassandra
关注(0)|答案(2)|浏览(192)

java.lang.NoSuchMethodError:com.google.common.io.ByteStreams.exhaust(Ljava/io/InputStream;)J中

在使用Guava-18.0v云存储-2.2.2v时,获得以上错误消息:

<dependency>
      <groupId>com.google.cloud</groupId>
      <artifactId>google-cloud-storage</artifactId>
      <version>2.2.2</version>
 </dependency>
 <dependency>
      <groupId>com.google.guava</groupId>
      <artifactId>guava</artifactId>
      <version>18.0</version>
 </dependency>
 <dependency>
      <groupId>com.datastax.cassandra</groupId>
      <artifactId>cassandra-driver-core</artifactId>
      <version>3.2.0</version>
 </dependency>

如果我使用Guava-23vDatastax-3.2.0v,我会得到以下错误消息:

java.lang.NoClassDefFoundError:com/google/common/util/concurrent/FutureFallback

所以云存储需要20以上的Guava版本,而DataStax需要20以下的版本,所以这两个版本都可以,但我都想要。
我的代码:

StorageOptions options = StorageOptions.newBuilder()
      .setProjectId(PROJECT_ID)
      .setCredentials(GoogleCredentials
           .fromStream(new FileInputStream(PATH_TO_JSON_KEY))).build();
 Storage storage = options.getService();
 Blob blob = storage.get(BUCKET_NAME, OBJECT_NAME);
 ReadChannel r = blob.reader();
m0rkklqb

m0rkklqb1#

3.2.0看起来像是2017年的一个非常旧的Cassandra驱动程序版本——尝试升级到这个主要版本3.11.0中的最新版本。
它看起来也像是驱动程序将包切换到com.datastackx.oss:java-driver-core并移动到主要版本4.x。

wqlqzqxt

wqlqzqxt2#

试图使用您提供的代码和依赖项重现错误。


小时
并且能够通过使用这些版本来解决问题。

<dependency>
      <groupId>com.google.cloud</groupId>
      <artifactId>google-cloud-storage</artifactId>
      <version>2.2.2</version>
    </dependency>
    <dependency>
      <groupId>com.google.guava</groupId>
      <artifactId>guava</artifactId>
      <version>20.0</version>
    </dependency>
     <dependency>
      <groupId>com.datastax.cassandra</groupId>
      <artifactId>cassandra-driver-core</artifactId>
      <version>3.11.0</version>
    </dependency>

输出:

使用Guava 20.0及以上版本时,建议使用最新版本的DataStax

相关问题