嵌套异常为java.lang.NoClassDefFoundError: com/fasterxml/jackson/databind/ser/std/ToStringSerializerBase,涉及IT技术。

16
current version jackson-databind-2.9.10.1.jar
need to upgrade jackson-databind-2.11.1.jar

我在更新后的 jackson jar 包中找不到 ToStringSerializerBase 类。

org.springframework.beans.BeanInstantiationException: 无法实例化 [com.fasterxml.jackson.datatype.jsr310.JavaTimeModule]: 无法解析的类定义;嵌套异常是 java.lang.NoClassDefFoundError: com/fasterxml/jackson/databind/ser/std/ToStringSerializerBase

我发现了内部依赖。

<dependency>
     <groupId>io.springfox</groupId>
     <artifactId>springfox-swagger2</artifactId>
     <version>2.10.5</version>
</dependency>

你有什么想法可以解决这个问题吗?


你可以从springfox-swagger2中排除jackson-databind依赖,看看是否可行? io.springfox springfox-swagger2 2.10.5 com.fasterxml.jackson.core jackson-databind - Govind
不,那并不能解决问题。似乎应用程序在运行时搜索它。org.springframework.beans.BeanInstantiationException:无法实例化[com.fasterxml.jackson.datatype.jsr310.JavaTimeModule]:无法解析的类定义;嵌套异常是java.lang.NoClassDefFoundError:com/fasterxml/jackson/databind/ser/std/ToStringSerializerBase 在org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:132)处, 在org.springframework.http.converter.json.Jackson2ObjectMapperBuilder.registerWell - ssp
请您提供完整的跟踪信息,可以吗? - Govind
2
这个问题有任何更新吗? - XWZ
2个回答

30

我在使用Spring和Jackson时遇到了类似的错误,并解决了它,见下文。

  1. 我有很多Spring相关的依赖项,以及以下Jackson的依赖项:
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
            <version>2.9.9</version>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-core</artifactId>
            <version>2.9.9</version>
        </dependency>

我运行了mvn dependency:tree|grep jackson命令,并发现版本冲突:

[INFO] |     +- com.fasterxml.jackson.datatype:jackson-datatype-jdk8:jar:2.11.4:compile
[INFO] |     +- com.fasterxml.jackson.datatype:jackson-datatype-jsr310:jar:2.11.4:compile
[INFO] |     \- com.fasterxml.jackson.module:jackson-module-parameter-names:jar:2.11.4:compile
[INFO] +- com.fasterxml.jackson.core:jackson-databind:jar:2.9.9:compile
[INFO] |  \- com.fasterxml.jackson.core:jackson-annotations:jar:2.11.4:compile
[INFO] \- com.fasterxml.jackson.core:jackson-core:jar:2.9.9:compile
  • 因此,我将我直接导入 pom.xml 的 Jackson 版本更改为与 Spring 的版本匹配,所有内容都顺利运行:
  •         <dependency>
                <groupId>com.fasterxml.jackson.core</groupId>
                <artifactId>jackson-databind</artifactId>
                <version>2.11.4</version>
            </dependency>
            <dependency>
                <groupId>com.fasterxml.jackson.core</groupId>
                <artifactId>jackson-core</artifactId>
                <version>2.11.4</version>
            </dependency>
    

    希望这可以帮助你。享受吧!


    8

    ToStringSerializerBase 出现在 jackson-databind 的版本 2.12 中。

    POM 依赖

    <dependency>
                <groupId>com.fasterxml.jackson.core</groupId>
                <artifactId>jackson-databind</artifactId>
                <version>2.12.0</version>
            </dependency>
    

    ToStringSerializerBase 存在于 Jar 中。

    (base) rohiagra-mac:faw-qa-api rohiagra$ jar -tvf target/faw-qa-api-1.0-SNAPSHOT.jar | grep "ToStringSerializerBase"
      3347 Sun Nov 29 14:46:22 IST 2020 com/fasterxml/jackson/databind/ser/std/ToStringSerializerBase.class
    

    修好了! - Frederick Haug

    网页内容由stack overflow 提供, 点击上面的
    可以查看英文原文,
    原文链接