Java 应用程序中 Jackson YAML 缺少方法问题

问题描述 投票:0回答:1

我正在升级 JAVA 应用程序。 我正在与

Gradle 8.5
合作,并升级到
JAVA 17
Spring Boot 3.2.5

在进行升级时,我遇到了涉及

com.fasterxml.jackson.*
库的问题。

之前,进行故障排除时,我唯一拥有的杰克逊库是:

org.openapitools:jackson-databind-nullable:0.2.4

我收到的错误消息指出:

NoSuchMethodError: void com.fasterxml.jackson.dataformat.yaml.YAMLParser.createChildObject(int, int)

我做了一些相当广泛的研究,并尝试了相当多的可能的解决方案。

我尝试的第一件事是添加到

com.fasterxml.jackson.dataformat-yaml
库中。我最初尝试使用版本
2.13.0
,但这似乎并没有解决问题。

我运行

./gradlew dependencyInsight -dependency jackson
查看它可能调用的版本。我发现它在版本
2.12.x
2.15.4
之间跳跃。注意到这一点,我尝试通过调整不断变化的软件包版本来强制版本
2.15.4
,直到所有版本都调用版本
2.14.x
2.15.4
并将依赖项实现设置为专门调用版本
2.15.4

这也没有解决问题。所以我然后尝试将软件包更新为使用

2.15.4
或更高版本的版本...这也不起作用。

然后我尝试实现所有相关的杰克逊库并将它们全部指向版本

2.15.4
jackson-core
jackson-databind
jackson-dataformat-yaml
jackson-datatype-jdk8
等)。不幸的是,这似乎也没有什么区别。

我尝试遵循此处找到的一些建议: 对象映射器 - YAMLFactory - 由于缺少 _createContentReference 方法而导致异常

但这似乎也不起作用,并且增加了新问题,而其他方法现在缺失了......

我在这里有点不知所措,真的需要一些建议。

java jackson java-17 spring-boot-3
1个回答
0
投票

编辑了为我解决这个问题的方法:

我花了 2 天多的时间来解决这个问题。我找不到任何可行的答案。我什至找不到问题的原因。即使验证只有所需的版本并且所有依赖项都成功解决并且 wwre 没有降级,问题仍然存在。

我最终能够通过在

buildscript {}
部分上方创建
plugins {}
来强制
jackson-core
仅解析为所需版本来解决此问题。

© www.soinside.com 2019 - 2024. All rights reserved.