You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java使用JSON密钥访问GCS抛出StorageException异常如何解决?

问题根因

该错误是Guava版本冲突导致的,核心报错点java.lang.NoSuchMethodError: com.google.common.io.ByteStreams.exhaust(Ljava/io/InputStream;)J说明运行时加载的Guava版本过旧,不存在目标方法。
出现IDEA运行异常、打包后Jar正常的差异,是因为IntelliJ的类加载优先级和Maven打包后的类加载优先级不一致:IDEA默认按依赖声明顺序加载类,你项目里引入的老旧依赖先加载,覆盖了高版本Guava的同名类,而Maven打包时会自动按依赖最短路径、声明顺序仲裁,最终用了正确版本的Guava。

具体冲突来源

  1. 你依赖的com.google.collections:google-collections:1.0是2008年就停止维护的废弃库,所有功能早已合并进Guava,这个库中的旧版ByteStreams类没有exhaust方法。
  2. 额外引入的com.google.cloud:google-cloud:0.8.0是早已废弃的版本,也会传递引入大量和当前libraries-bom不兼容的旧版依赖。

解决方案

按以下步骤修改即可:

  1. 删除废弃依赖,从pom.xml中移除以下两个依赖声明:
<!-- 移除这个废弃的google-collections -->
<dependency>
    <groupId>com.google.collections</groupId>
    <artifactId>google-collections</artifactId>
    <version>1.0</version>
</dependency>

<!-- 移除这个老旧的google-cloud依赖 -->
<dependency>
    <groupId>com.google.cloud</groupId>
    <artifactId>google-cloud</artifactId>
    <version>0.8.0</version>
</dependency>
  1. 统一Guava版本管理,你已经引入了Google官方的libraries-bom来做依赖版本统一,不需要手动指定Guava版本,把Guava依赖的版本声明去掉即可,避免手动指定版本和GCS SDK要求的版本不兼容:
<dependency>
    <groupId>com.google.guava</groupId>
    <artifactId>guava</artifactId>
    <!-- 去掉这里的version标签,由libraries-bom统一管理兼容版本 -->
</dependency>
  1. 刷新IntelliJ依赖与缓存:
  • 点击IDEA右侧Maven面板的刷新按钮,或者右键项目选择「Maven -> Reload Project」重新加载依赖
  • 清理IDEA缓存:选择顶部菜单「File -> Invalidate Caches...」,勾选清除文件系统缓存和本地历史,重启IDEA后再次运行测试即可。
    修改完成后IDEA运行和打包后的Jar都会正常工作,不会影响原有功能。

内容的提问来源于stack exchange,提问作者Vik H

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.09 22:06:03