AWS Java异常:KmsMasterKeyProvider源码与字节码不匹配及依赖问题
问题分析与解决方案
核心原因1:AWS SDK v2核心依赖缺失
java.lang.NoClassDefFoundError: software/amazon/awssdk/core/interceptor/ExecutionInterceptor 错误说明项目缺少AWS SDK v2的核心依赖包。aws-encryption-sdk-java的KmsMasterKeyProvider(基于SDK v2实现的版本)依赖AWS SDK v2的aws-sdk-core模块,而你当前仅引入了加密SDK本身,未显式添加该依赖。
解决办法:添加AWS SDK v2核心及KMS依赖
在Maven pom.xml中补充以下依赖:
<!-- AWS SDK v2核心依赖 --> <dependency> <groupId>software.amazon.awssdk</groupId> <artifactId>aws-sdk-core</artifactId> <version>2.20.0</version> <!-- 版本需与加密SDK兼容,可查看加密SDK的pom.xml确认依赖版本 --> </dependency> <!-- AWS KMS SDK v2依赖 --> <dependency> <groupId>software.amazon.awssdk</groupId> <artifactId>kms</artifactId> <version>2.20.0</version> </dependency>
注意:版本号要和aws-encryption-sdk-java保持兼容,可通过加密SDK的pom.xml文件(Maven仓库可查)确认它依赖的AWS SDK v2版本,避免版本冲突。
核心原因2:IDE缓存与源码不匹配
IntelliJ IDEA提示“Library source does not match the bytecode for class KmsMasterKeyProvider”,通常是IDE缓存的源码包与实际引入的字节码版本不一致,或是Maven依赖下载不完整导致。
解决办法:
- 清理Maven本地缓存:找到本地Maven仓库中
com/amazonaws/aws-encryption-sdk-java目录,删除对应版本的文件夹,再执行mvn clean install -U强制更新依赖。 - 刷新IDE Maven依赖:点击右侧Maven面板的「Reload All Maven Projects」按钮,或用快捷键
Ctrl+Shift+O(Windows/Linux)/Cmd+Shift+O(Mac)重新导入。 - 清除IDE缓存:依次点击「File」→「Invalidate Caches...」,选择「Invalidate and Restart」,重启IDE后重新加载项目。
额外检查:依赖冲突排查
若添加依赖后问题仍存在,可能是项目同时引入了AWS SDK v1和v2依赖导致版本冲突。执行mvn dependency:tree查看依赖树,排查是否有com.amazonaws:aws-java-sdk-*(SDK v1)和software.amazon.awssdk:*(SDK v2)的冲突,排除不需要的依赖版本。
内容的提问来源于stack exchange,提问作者jnemecz
相关产品推荐
相关产品推荐

