Java SpringBoot 2.3中带有Maven的Jackson版本

Java SpringBoot 2.3中带有Maven的Jackson版本,java,spring-boot,maven,jackson,jackson-databind,Java,Spring Boot,Maven,Jackson,Jackson Databind,当我将项目从SpringBoot 2.2.7更新到2.3.0时,启动时遇到以下错误: Caused by: java.lang.ClassNotFoundException: com.fasterxml.jackson.databind.ser.std.ToStringSerializerBase at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:602) ~[na:na]

当我将项目从SpringBoot 2.2.7更新到2.3.0时,启动时遇到以下错误:

Caused by: java.lang.ClassNotFoundException: com.fasterxml.jackson.databind.ser.std.ToStringSerializerBase
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:602) ~[na:na]
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178) ~[na:na]
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522) ~[na:na]
更新后,我在Eclipse中没有看到任何错误。 我指定在pom.xml中不直接使用Jackson,而只使用使用它的外部包(来自mvnrepository.com)

因此,我认为这与Jackson从2.10升级到2.11有关,可能与外部包的Maven依赖性有关(例如JWT Jackson使用2.9)

在pom.xml中,我看到以下内容:

之前(SpringBoot 2.9.7):

之后(SpringBoot 2.3.0):


我的解释正确吗?有没有pom.xml(或其他任何东西)的解决方案来解决此类问题?

看起来您混合了三种不同的Jackson版本:

  • 2.9例如
    jackson-databind-2.9.10.3
  • 2.10例如
    jackson-dataformat-yaml-2.10.1
  • 2.11例如
    jackson-datatype-jdk8-2.11.0

这是行不通的,您必须使用相同的Jackson版本。缺少
ToStringSerializerBase
的特殊问题来自于将2.9与2.10+一起使用。

从pom文件中的
jjwt jackson
springdoc openapi ui
中使用并排除2.9和2.10版本。

谢谢您的回答!但是这三个不同的版本被3个外部开源软件包(SpringBoot(2.11)、jjwt jackson(2.9)和springdoc openapi ui(2.10)使用,您可以在mvnrepository上找到它们),而不是直接用于我的项目。所以我只能希望这个不同的项目很快会发布新版本?你不应该把库和不同的可传递依赖项混合在一起。仅仅因为它们被发布到maven central并不意味着它们将一起工作。