Spring Boot项目添加Java类后出现NoSuchMethodError异常求助
解决Spring Boot 2.7.3中snakeyaml的NoSuchMethodError问题
问题根源
Spring Boot 2.7.3默认适配的snakeyaml版本是1.30,项目中大概率是其他依赖间接引入了不兼容的snakeyaml版本,导致版本冲突——新版本的org.yaml.snakeyaml.representer.Representer可能移除了无参构造方法,引发运行时错误。
具体解决步骤
强制锁定snakeyaml版本:在
build.gradle的dependencies块中直接声明依赖,覆盖其他依赖引入的版本:dependencies { // 保留原有依赖,新增以下行 implementation 'org.yaml:snakeyaml:1.30' }排查并排除冲突依赖:执行Gradle命令生成完整依赖树,定位引入冲突版本的依赖:
./gradlew dependencies --configuration runtimeClasspath在输出中搜索
snakeyaml,找到对应的冲突依赖后,通过exclude排除其自带的snakeyaml:dependencies { implementation('冲突依赖的完整坐标') { exclude group: 'org.yaml', module: 'snakeyaml' } }清理重建项目:执行以下命令清理缓存并重新构建:
./gradlew clean build重启IntelliJ IDEA并同步Gradle项目,确保依赖生效。
排查DevTools类加载问题:如果使用了Spring Boot DevTools,临时注释掉该依赖后重新运行项目,排查是否是类加载器冲突导致的问题。
内容的提问来源于stack exchange,提问作者vic
相关产品推荐
相关产品推荐

