Java应用从8升级到21时遇AWS依赖解析错误求助
问题
将Java应用从JDK 8升级到JDK 21后,独立的AWS交互应用运行正常,但整合到待升级的大型项目时出现编译错误:
The type software.amazon.awssdk.awscore.client.builder.AwsClientBuilder cannot be resolved. It is indirectly referenced from required type software.amazon.awssdk.services.s3.S3BaseClientBuilder
开发环境:Eclipse + Maven
触发错误的代码片段:
StaticCredentialsProvider provider = StaticCredentialsProvider.create(creds);
导入语句:
import software.amazon.awssdk.auth.credentials.AwsBasicCredentials; import software.amazon.awssdk.auth.credentials.AwsCredentials; import software.amazon.awssdk.auth.credentials.StaticCredentialsProvider; import software.amazon.awssdk.regions.Region; import software.amazon.awssdk.services.s3.S3Client;
POM依赖配置:
<dependency> <groupId>software.amazon.awssdk</groupId> <artifactId>s3</artifactId> <version>2.25.23</version> </dependency>
module-info.java配置:
requires software.amazon.awssdk.auth; requires software.amazon.awssdk.regions; requires software.amazon.awssdk.services.s3;
独立应用无module-info.java文件,推测问题与构建路径或模块配置相关,但不确定具体原因。
解决方案
- 添加AWS Core模块依赖:错误中提到的
AwsClientBuilder属于awssdk-core模块,虽然s3依赖会间接引入该模块,但在模块化项目中需要显式声明依赖。在POM中添加:<dependency> <groupId>software.amazon.awssdk</groupId> <artifactId>awssdk-core</artifactId> <version>2.25.23</version> </dependency> - 更新module-info.java:在模块声明中补充对核心模块的依赖:
requires software.amazon.awssdk.auth; requires software.amazon.awssdk.regions; requires software.amazon.awssdk.services.s3; requires software.amazon.awssdk.core; - 刷新依赖并清理项目:在Eclipse中执行
Maven > Update Project(勾选强制更新快照/发布版),再执行Project > Clean重新构建项目。 - 检查模块路径:确认Eclipse构建路径中所有AWS SDK相关模块都已正确识别,无版本冲突或缺失情况。
内容的提问来源于stack exchange,提问作者jbinbama
相关产品推荐
相关产品推荐

