提问人:Liron Tal 提问时间:8/28/2023 最后编辑:Liron Tal 更新时间:8/28/2023 访问量:188
NoMethodFoundException - Jackson yaml 解析器和 snakeYAML
NoMethodFoundException - Jackson yaml parser & snakeYAML
问:
尝试将YAML字符串转换为类时,我遇到以下异常
java.lang.NoSuchMethodError: 'void org.yaml.snakeyaml.parser.ParserImpl.<init>(org.yaml.snakeyaml.reader.StreamReader, org.yaml.snakeyaml.LoaderOptions)'
at com.fasterxml.jackson.dataformat.yaml.YAMLParser.<init>(YAMLParser.java:204)
执行此代码时:
try {
MyClass claseIns = mapper.readValue(string, MyClass.class);
MyClass.add(claseIns);
} catch (JsonProcessingException e) {
e.printStackTrace();
}
Spring Boot 版本 2.7.13
build.gradle 包括:
buildscript {
dependencies {
classpath 'org.yaml:snakeyaml:2.0'
}
}
dependencies {
implementation 'com.fasterxml.jackson.dataformat:jackson-dataformat-yaml:2.15.2'
}
从网上搜索来看,这似乎是 jackson 和 snakeYAML 之间的版本问题,但正如你在这里看到的,它说 jackson 2.15.2 与 snakeYAML 2.0 兼容: https://mvnrepository.com/artifact/com.fasterxml.jackson.dataformat/jackson-dataformat-yaml/2.15.2
答:
1赞
AztecCodes
8/28/2023
#1
该问题可能来自版本 (2.15.2) 与关联版本之间的不匹配。如果您使用的是其他版本,则它可能缺少 所需的某些方法,从而导致 .jackson-dataformat-yaml
snakeyaml
snakeyaml
jackson-dataformat-yaml
NoSuchMethodError
如何:解决此问题
- 通过允许拉取版本来同步版本,并且不对其进行硬编码。
守则:jackson-dataformat-yaml
dependencies {
implementation 'com.fasterxml.jackson.dataformat:jackson-dataformat-yaml:2.15.2'
// Do not specify snakeyaml version here, let jackson-dataformat-yaml pull the appropriate version
}
如果存在冲突的依赖关系,则可以使用 中的功能。刷新后,检查依赖项并找到并查看版本是否匹配。exclude
gradle
Gradle
snakeyaml
评论
0赞
Liron Tal
8/28/2023
那么我应该从 buildScript 中删除 x 类路径'org.yaml:snakeyaml:2.0'吗?我仍然不确定我应该在我的配置中更改什么
0赞
AztecCodes
8/28/2023
@LironTal 试试看。
0赞
Liron Tal
8/28/2023
仍然收到相同的错误:(
评论