【问题标题】:NoSuchMethodError with Guava , GCP Cloud Storage & DatastaxGuava、GCP 云存储和 Datastax 的 NoSuchMethodError
【发布时间】:2022-01-12 19:34:30
【问题描述】:

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

在使用 Guava - 18.0vCloud Storage - 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

所以云存储需要 Guava 版本高于 20 ,但 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();

【问题讨论】:

    标签: java google-cloud-storage guava datastax spring-cloud-gcp


    【解决方案1】:

    3.2.0 似乎是 2017 年以来 Cassandra 驱动程序的一个非常旧的版本——尝试升级到这个主要版本的最新版本,3.11.0

    看起来驱动程序将包切换到com.datastackx.oss:java-driver-core 并移至主要版本 4.x。

    【讨论】:

      【解决方案2】:

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

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

      <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

      【讨论】:

      • 你在 intellij 上测试过吗?
      • 我没有用 IntelliJ 测试过。我在云壳中进行了测试。 @Anilkumar
      • 我在 this 堆栈帖子中发现了类似的问题,您可能想检查一下。
      猜你喜欢
      • 1970-01-01
      • 2020-10-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-01-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多