web-dev-qa-db-ja.com

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;
}
17
xybrek

Googleグアバのバージョンが古すぎる(<20.0)か、不一致(複数のjarバージョン)です。依存関係ツリーに複数のバージョンがないことを確認してください。

つかいます

mvn dependency:tree | less

グアバのバージョンを探します。

27
Laurent Perez

次の依存関係をプロジェクトの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>
9
Avinash Pande

Java/Kotlinアプリケーションでも同じ問題が発生しました。アプリがIntelliJ経由で実行されたとき、問題はありませんでした。ただし、。Jarを実行すると、上記のエラーメッセージがスローされました。

上記の@Laurent Perezによって定義されたGuavaの問題で実行する直接的なアクションアイテムを見つけることができなかったため、次のようにしての問題を解決しました。Jar実行中のファイル:

  • IntelliJから。JarIntelliJ設定とファイルを削除しました。次に、。Jarを再追加します ステップ3 このデプロイからガイド。

上記が機能しない場合に試す他のアクション:

  • プロジェクトを再構築します。
  • IntelliJキャッシュを無効にして再起動します。
  • コンピューターを再起動。
2
Adam Hurwitz

私の場合、たまたま両方を含めました

    <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コレクションを削除すると、問題が解決しました。

1
sabbir

プロジェクトを含むpom.xmlの依存関係の先頭に、新しいバージョンのguavaを含む依存関係を挿入してみてください。

例えば。

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