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

您的Google番石榴版本太旧(<20.0)或不匹配(多个罐子版本)。 确保依赖关系树中没有多个版本。

使用

 mvn dependency:tree | less 

寻找番石榴版本。

请将以下依赖项添加到项目的POM中:

  com.google.guava guava 23.6-jre   org.apache.httpcomponents httpcore 4.4.8  

我在Java / Kotlin应用程序中遇到了同样的问题。 当应用程序通过IntelliJ运行时没有问题。 但是,当运行.Jar时,会抛出上面的错误消息。

我找不到上面由@Laurent Perez定义的Guava问题的直接操作项,所以我做了以下操作来解决运行我的.Jar文件的问题:

  • 从IntelliJ中删除了.Jar IntelliJ配置和文件。 然后从本部署指南中重新添加.Jar,然后执行步骤3

如果以上操作无效,则尝试其他操作:

  • 重建项目。
  • 使IntelliJ缓存无效并重新启动。
  • 重启电脑。