snakeyaml升级2.0版本遇见的坑,解决办法

在升级snakeyaml从1.x到2.0后,由于Representer类的无参构造方法被移除,导致SpringBoot应用启动时出现错误。错误日志显示无法找到相应的方法,影响了配置文件的加载。解决方案是重写Representer类,添加缺失的无参构造函数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这几天公司做安全漏洞扫描,发现snakeyaml1.x版本有高危漏洞,需要升级到2.0,但是snakeyaml从1.x版本升级到2.0之后报错,项目无法启动
2023-07-26 16:56:27,036 main ERROR appenders contains an invalid element or attribute “appender”
2023-07-26 16:56:27,064 main ERROR Unable to locate appender “Filelog” for logger config “root”
2023-07-26 16:56:27,064 main ERROR Unable to locate appender “RollingFileWarn” for logger config “root”
2023-07-26 16:56:27,065 main ERROR Unable to locate appender “RollingFileError” for logger config “root”
requestId: 2023-07-26 16:56:27.746 ERROR [main] org.springframework.boot.SpringApplication - Application run failed
java.lang.NoSuchMethodError: org.yaml.snakeyaml.representer.Representer: method ()V not found
at org.springframework.boot.env.OriginTrackedYamlLoader.createYaml(OriginTrackedYamlLoader.java:76) ~[spring-boot-2.5.14.jar:2.5.14]
at org.springframework.boot.env.OriginTrackedYamlLoader.createYaml(OriginTrackedYamlLoader.java:71) ~[spring-boot-2.5.14.jar:2.5.14]
at org.springframework.beans.factory.config.YamlProcessor.process(YamlProcessor.java:164) ~[spring-beans-5.3.21.jar:5.3.21]
at org.springframework.boot.env.OriginTrackedYamlLoader.load(OriginTrackedYamlLoader.java:84) ~[spring-boot-2.5.14.jar:2.5.14]
at org.springframework.boot.env.YamlPropertySourceLoader.load(YamlPropertySourceLoader.java:50) ~[spring-boot-2.5.14.jar:2.5.14]
at org.springframework.boot.context.config.StandardConfigDataLoader.load(StandardConfigDataLoader.java:54) ~[spring-boot-2.5.14.jar:2.5.14]
at org.springframework.boot.context.config.StandardConfigDataLoader.load(StandardConfigDataLoader.java:36) ~[spring-boot-2.5.14.jar:2.5.14]
at org.springframework.boot.context.config.ConfigDataLoaders.load(ConfigDataLoaders.java:107) ~[spring-boot-2.5.14.jar:2.5.14]
at org.springframework.boot.context.config.ConfigDataImporter.load(ConfigDataImporter.java:128) ~[spring-boot-2.5.14.jar:2.5.14]

在这里插入图片描述描述
原因是因为Representer类的无参构成方法移除了,但是我们的springboot版本还在加载无参构造导致的报错。

解决方法
重写org.yaml.snakeyaml.representer包下的Representer类,增加无参构造方法
在这里插入图片描述
在这里插入图片描述
增加红框中的无参构造方法

评论 42
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值