NoSuchMethodError: com.google.common.base.Preconditions.checkArgument(ZLjava/lang/String; J) V

Какая зависимость Google Maven может исправить эту ошибку:

java.lang.NoSuchMethodError: com.google.common.base.Preconditions.checkArgument(ZLjava/lang/String;J)V
    at com.google.cloud.storage.spi.v1.HttpStorageRpc.read(HttpStorageRpc.java:487)
    at com.google.cloud.storage.BlobReadChannel$1.call(BlobReadChannel.java:127)
    at com.google.cloud.storage.BlobReadChannel$1.call(BlobReadChannel.java:124)
    at com.google.api.gax.retrying.DirectRetryingExecutor.submit(DirectRetryingExecutor.java:94)
    at com.google.cloud.RetryHelper.runWithRetries(RetryHelper.java:54)
    at com.google.cloud.storage.BlobReadChannel.read(BlobReadChannel.java:124)
    at sun.nio.ch.ChannelInputStream.read(ChannelInputStream.java:65)
    at sun.nio.ch.ChannelInputStream.read(ChannelInputStream.java:109)
    at sun.nio.ch.ChannelInputStream.read(ChannelInputStream.java:103)
    at java.io.InputStream.read(InputStream.java:101)

Код:

Blob blob = storage.get(blobId);
if(blob.exists()) {
    return true;
}

Ответы

Ответ 1

Ваша версия Google guava слишком старая (<20.0) или несовпадающая (несколько версий jars). Убедитесь, что у вас нет нескольких версий в дереве зависимостей.

использование

mvn dependency:tree | less

искать версии guava.

Ответ 2

Пожалуйста, добавьте следующие зависимости к вашему проекту. POM:

<dependency>
    <groupId>com.google.guava</groupId>
    <artifactId>guava</artifactId>
    <version>23.6-jre</version>
</dependency> 
<dependency>
    <groupId>org.apache.httpcomponents</groupId>
    <artifactId>httpcore</artifactId>
    <version>4.4.8</version>
</dependency>

Ответ 3

У меня была такая же проблема в моем приложении Java/Kotlin. Когда приложение запускалось через IntelliJ, проблем не возникало. Однако при запуске.Jar вышло сообщение об ошибке выше.

Я не мог найти элемент прямого действия для решения проблемы с Guava, описанной выше @Laurent Perez, поэтому я сделал следующее, которое разрешило проблему с моим файлом .Jar:

  • Удалены .Jar IntelliJ конфигурации и файл из IntelliJ. Затем повторно добавлен .Jar после шага 3 из этого руководства по развертыванию.

Другие действия, чтобы попытаться, если выше не работает:

  • Перестроить проект.
  • Недействительный кеш IntelliJ и перезапуск.
  • Перезапустить компьютер.

Ответ 4

Попробуйте вставить зависимость, содержащую более новую версию guava, вверху ваших зависимостей в файле pom.xml, содержащем ваш проект.

Например

  <dependency>
      <groupId>com.google.guava</groupId>
      <artifactId>guava</artifactId>
      <version>24.1.1-jre</version>
  </dependency>

Ответ 5

В моем случае я включил оба

    <dependency>
      <groupId>com.google.collections</groupId>
      <artifactId>google-collections</artifactId>
      <version>1.0</version>
    </dependency>

а также

    <dependency>
      <groupId>com.google.guava</groupId>
      <artifactId>guava</artifactId>
      <version>28.0-jre</version>
    </dependency>

Оказывается, я не могу использовать обе эти библиотеки. Удаление google-коллекций устранило проблему для меня.