AWS SDK Java V2 S3上传报SIGNING_REGION_SCOPE字段缺失错误如何修复
问题根因
这个java.lang.NoSuchFieldError: SIGNING_REGION_SCOPE错误本质是AWS SDK v2各模块版本不匹配导致的:
你当前只单独指定了s3模块的版本为2.17.34,但项目中其他依赖传递引入的AWS SDK核心模块(如aws-core、auth、regions等)版本低于2.17.34,SIGNING_REGION_SCOPE是高版本核心模块才新增的字段,低版本核心包中不存在该字段,S3模块运行时调用就会抛出字段不存在的错误。
修复方案
推荐使用AWS SDK提供的BOM(物料清单)统一管理所有AWS SDK v2模块的版本,避免各模块版本不一致问题:
第一步:修改Maven依赖配置,引入AWS SDK BOM
在pom.xml的<dependencyManagement>节点中加入AWS SDK BOM,之后所有AWS SDK模块就不需要单独指定版本号,自动和BOM版本保持一致:
<dependencyManagement> <dependencies> <dependency> <groupId>software.amazon.awssdk</groupId> <artifactId>bom</artifactId> <version>2.17.34</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement>
然后把原来的s3依赖去掉版本号配置:
<dependency> <groupId>software.amazon.awssdk</groupId> <artifactId>s3</artifactId> </dependency>
第二步:清理项目缓存重新构建
执行mvn clean install清理旧的依赖缓存,重新拉取对齐版本后的依赖即可解决该错误。
临时修复方案(无需引入BOM)
检查项目中所有software.amazon.awssdk组下的依赖,全部统一设置为2.17.34版本,确保没有版本差异即可。
内容的提问来源于stack exchange,提问作者mibrahim.iti
相关产品推荐
相关产品推荐

