You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

升级jackson databind至2.15.2遇NoClassDefFoundError问题求助

问题分析与解决方案

原因分析

出现java.lang.NoClassDefFoundError: com/fasterxml/jackson/core/JsonProcessingException的核心原因是运行时类路径中Jackson核心组件版本不匹配或缺失:

  • Spring Boot 2.2.6默认依赖Jackson 2.10.x版本,手动升级databind到2.15.2后,若依赖排除不彻底,其他依赖会间接引入旧版本的jackson-core,导致2.15.2版本的databind无法找到对应版本的JsonProcessingException类(该类属于jackson-core模块)。
  • 手动排除和单独引入的方式容易遗漏部分依赖的版本控制,造成类路径中存在多版本Jackson组件,类加载时出现冲突。

解决方案

1. 使用Jackson BOM统一管理版本(推荐)

Spring Boot支持通过导入Jackson BOM来统一控制所有Jackson相关模块的版本,避免手动排除和版本不一致问题。修改pom.xml如下:

<!-- 在dependencyManagement节点中添加Jackson BOM -->
<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>com.fasterxml.jackson</groupId>
            <artifactId>jackson-bom</artifactId>
            <version>2.15.2</version>
            <scope>import</scope>
            <type>pom</type>
        </dependency>
    </dependencies>
</dependencyManagement>

<!-- 只需要保留databind的依赖,无需单独引入core和annotations -->
<dependencies>
    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-databind</artifactId>
        <!-- 无需指定版本,BOM会自动控制 -->
    </dependency>
    <!-- 其他项目依赖... -->
</dependencies>

删除之前所有手动排除jackson-core、jackson-annotations的配置,BOM会自动将所有Jackson相关模块的版本统一为2.15.2。

2. 检查并清理依赖冲突

执行Maven命令查看Jackson核心组件的依赖树,确认是否存在旧版本依赖:

mvn dependency:tree -Dincludes=com.fasterxml.jackson.core

如果输出中存在非2.15.2版本的jackson-core或jackson-annotations,找到对应的依赖项,在其<dependency>节点中添加排除配置:

<dependency>
    <groupId>xxx</groupId>
    <artifactId>xxx</artifactId>
    <exclusions>
        <exclusion>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-core</artifactId>
        </exclusion>
        <exclusion>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-annotations</artifactId>
        </exclusion>
    </exclusions>
</dependency>

3. 清理并重新构建项目

执行以下命令清理旧的构建产物并重新构建,确保新的依赖被正确打包:

mvn clean install

4. 验证运行时类路径

打包完成后,检查生成的Jar包中Jackson组件的版本是否统一:

jar tf target/your-project.jar | grep jackson

确认输出中所有jackson-core、jackson-databind、jackson-annotations的Jar包版本均为2.15.2。

5. 容器部署额外检查

如果是在Tomcat等容器中部署,需检查容器自身的类路径是否包含旧版本Jackson组件。若存在冲突,可通过调整容器的类加载策略(如启用应用类加载优先)或移除容器中的Jackson依赖来解决。

内容的提问来源于stack exchange,提问作者jayesh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 13:32:56