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

调用Google Cloud Storage列取文件接口出现NoSuchMethodError求助

问题排查结果

错误根因

你遇到的NoSuchMethodError是典型的Guava依赖版本冲突问题:
你显式引入的com.google.guava:guava:31.0.1-jre和com.google.cloud:google-cloud-storage:1.113.14-sp.2依赖的底层gax库要求的Guava版本不匹配。该版本google-cloud-storage调用的MoreExecutors.directExecutor()方法在低版本Guava中返回值为ListeningExecutorService,而Guava 31中该方法返回值修改为Executor,方法签名不匹配触发类加载错误。

修复方案

  • 优先移除项目中显式声明的Guava 31.0.1-jre依赖,让Maven/Gradle等构建工具自动拉取google-cloud-storage传递依赖的匹配版本Guava即可解决报错。
  • 如果项目其他组件必须依赖高版本Guava,可将google-cloud-storage升级到2.x及以上版本,新版本已完成高版本Guava的适配。

代码逻辑补充说明

你当前代码中存在两处可优化点:

  1. 你将Storage.BlobListOption.prefix(keyName)查询参数注释了,所以当前调用只会返回整个存储桶的全部文件,不会按照传入的keyName前缀过滤,如需前缀查询取消该注释即可。
  2. 代码中直接对Blob列表调用.tail,如果存储桶为空或者前缀匹配结果为空,会抛出NoSuchElementException,建议增加列表非空判断后再调用tail。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 21:15:03