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-23v和Datastax-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();
2条答案
按热度按时间m0rkklqb1#
3.2.0看起来像是2017年的一个非常旧的Cassandra驱动程序版本——尝试升级到这个主要版本3.11.0中的最新版本。
它看起来也像是驱动程序将包切换到com.datastackx.oss:java-driver-core并移动到主要版本4.x。
wqlqzqxt2#
试图使用您提供的代码和依赖项重现错误。
小时
并且能够通过使用这些版本来解决问题。
输出:
![](https://i.stack.imgur.com/vk8wa.png)
使用Guava 20.0及以上版本时,建议使用最新版本的DataStax。