【问题标题】:nested exception is java.lang.NoClassDefFoundError: com/fasterxml/jackson/databind/ser/std/ToStringSerializerBase嵌套异常是 java.lang.NoClassDefFoundError: com/fasterxml/jackson/databind/ser/std/ToStringSerializerBase
【发布时间】:2020-10-29 13:14:58
【问题描述】:
current version jackson-databind-2.9.10.1.jar
need to upgrade jackson-databind-2.11.1.jar

我在杰克逊更新的新版 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 依赖项,看看是否有效? &lt;dependency&gt; &lt;groupId&gt;io.springfox&lt;/groupId&gt; &lt;artifactId&gt;springfox-swagger2&lt;/artifactId&gt; &lt;version&gt;2.10.5&lt;/version&gt; &lt;exclusions&gt; &lt;exclusion&gt; &lt;groupId&gt;com.fasterxml.jackson.core&lt;/groupId&gt; &lt;artifactId&gt;jackson-databind&lt;/artifactId&gt; &lt;/exclusion&gt; &lt;/exclusions&gt; &lt;/dependency&gt;
  • 不,这不能解决。似乎应用程序搜索在运行时搜索它。 org.springframework.beans.BeanInstantiationException:无法实例化[com.fasterxml.jackson.datatype.jsr310.JavaTimeModule]:无法解析的类定义;嵌套异常是 java.lang.NoClassDefFoundError: com/fasterxml/jackson/databind/ser/std/ToStringSerializerBase at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:132) at org.springframework.http.converter.json。 Jackson2ObjectMapperBuilder.registerWell
  • 能否提供完整的跟踪信息?
  • 这个问题有更新吗?

标签: swagger-2.0 jackson-databind


【解决方案1】:

我在 Spring vs. 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
  1. 所以我更改了我直接导入到我的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>

希望这会有所帮助。享受吧!

【讨论】:

    【解决方案2】:

    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
    

    【讨论】:

    • 帮我修好了!
    猜你喜欢
    • 2022-09-20
    • 2021-11-10
    • 1970-01-01
    • 2021-09-04
    • 1970-01-01
    • 2020-11-24
    • 2015-08-02
    • 2015-03-01
    • 1970-01-01
    相关资源
    最近更新 更多