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

SpringBoot 3.1.4迁移后WebClient调用Jackson解析报错

问题:SpringBoot 3.1.4迁移后WebClient Jackson解析响应报错

项目从SpringBoot 2.7迁移至3.1.4(使用Java 17、Jackson 2.15.0)后,原正常运行的WebClient调用出现Jackson解析响应报错。

项目依赖配置

<properties>
    <java.version>17</java.version>
    <kotlin.version>1.7.21</kotlin.version>
    <springdoc.openapi.version>2.2.0</springdoc.openapi.version>
    <swagger-annotations.version>2.2.0</swagger-annotations.version>
    <spring-cloud.version>2022.0.4</spring-cloud.version>
    <apache.poi.version>5.2.3</apache.poi.version>
</properties>
<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-webflux</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-actuator</artifactId>
    </dependency>
    <dependency>
        <groupId>com.fasterxml.jackson.module</groupId>
        <artifactId>jackson-module-kotlin</artifactId>
    </dependency>
    <dependency>
        <groupId>io.projectreactor.kotlin</groupId>
        <artifactId>reactor-kotlin-extensions</artifactId>
    </dependency>
    <dependency>
        <groupId>org.jetbrains.kotlin</groupId>
        <artifactId>kotlin-stdlib-jdk8</artifactId>
    </dependency>
    <dependency>
        <groupId>org.jetbrains.kotlinx</groupId>
        <artifactId>kotlinx-coroutines-reactor</artifactId>
    </dependency>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>com.google.code.gson</groupId>
        <artifactId>gson</artifactId>
        <version>2.8.9</version>
    </dependency>
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-sleuth</artifactId>
        <version>3.1.9</version>
    </dependency>
    <dependency>
        <groupId>jakarta.annotation</groupId>
        <artifactId>jakarta.annotation-api</artifactId>
        <version>2.1.1</version>
    </dependency>
</dependencies>

报错信息

java.lang.NoSuchMethodError: 'com.fasterxml.jackson.core.JsonParser com.fasterxml.jackson.core.JsonFactory.createNonBlockingByteBufferParser()'
        at org.springframework.http.codec.json.Jackson2Tokenizer.tokenize(Jackson2Tokenizer.java:251)

解决方案

核心原因

该错误是Jackson版本依赖冲突导致的。SpringBoot 3.1.x默认适配Jackson 2.15.x,但项目中可能引入了更低版本的jackson-core组件——createNonBlockingByteBufferParser()方法是Jackson 2.10+才新增的,低版本Jackson不存在这个方法,因此触发NoSuchMethodError。

排查与修复步骤

  1. 检查依赖树
    执行Maven命令查看依赖树,定位引入低版本Jackson的来源:

    mvn dependency:tree
    

    重点排查spring-cloud-starter-sleuth这类第三方依赖,确认是否自带了低版本Jackson组件。

  2. 统一Jackson版本
    利用SpringBoot的依赖管理能力,在pom.xml的<properties>中明确指定Jackson版本(与SpringBoot 3.1.4默认版本一致即可):

    <properties>
        <!-- 其他配置... -->
        <jackson.version>2.15.2</jackson.version>
    </properties>
    
  3. 排除冲突依赖
    如果发现某个依赖强制引入了低版本Jackson,在该依赖中添加排除规则,移除冲突的Jackson组件。以spring-cloud-starter-sleuth为例:

    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-sleuth</artifactId>
        <version>3.1.9</version>
        <exclusions>
            <exclusion>
                <groupId>com.fasterxml.jackson.core</groupId>
                <artifactId>jackson-core</artifactId>
            </exclusion>
            <exclusion>
                <groupId>com.fasterxml.jackson.core</groupId>
                <artifactId>jackson-databind</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
    
  4. 验证修复
    重新执行mvn dependency:tree,确认所有Jackson相关依赖(jackson-core、jackson-databind、jackson-module-kotlin等)版本统一为2.15.x,随后重启项目测试WebClient调用即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 11:43:20