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

Jackson类型不兼容错误:JsonFactory无法转换为TokenStreamFactory

Jackson类型不匹配问题解决

问题背景

  • Spring版本:5.2.22
  • 使用的Jackson依赖:
<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.11.0</version>
</dependency>

错误详情

位置:
com/fasterxml/jackson/databind/cfg/MapperBuilder.streamFactory()Lcom/fasterxml/jackson/core/TokenStreamFactory; @7: areturn
原因:
类型'com/fasterxml/jackson/core/JsonFactory'(当前栈帧,stack[0])无法赋值给'com/fasterxml/jackson/core/TokenStreamFactory'(方法签名要求)
当前栈帧:
bci: @7
flags: { }
locals: { 'com/fasterxml/jackson/databind/cfg/MapperBuilder' }
stack: { 'com/fasterxml/jackson/core/JsonFactory' }
字节码:
0x0000000: 2ab4 0002 b600 08b0

问题根源

Jackson 2.11.x版本里,JsonFactory还没实现TokenStreamFactory接口——这个接口是Jackson 2.12及以上版本才新增的。但Spring 5.2.22依赖的Jackson版本范围可能引入了更高版本的Jackson core类,导致类加载时出现矛盾:编译时方法签名要求返回TokenStreamFactory,但运行时实际返回的JsonFactory没实现这个接口,触发字节码验证错误。

解决步骤

  1. 统一Jackson核心依赖版本:把jackson-core、jackson-databind、jackson-annotations三个依赖的版本统一成Spring 5.2.22兼容的稳定版,比如2.12.7,修改后的依赖如下:
<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-core</artifactId>
    <version>2.12.7</version>
</dependency>
<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.12.7</version>
</dependency>
<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-annotations</artifactId>
    <version>2.12.7</version>
</dependency>
  1. 排查并解决依赖冲突:用Maven的mvn dependency:tree命令或者Gradle的./gradlew dependencies任务,检查项目里有没有其他依赖引入了不一致版本的Jackson core,找到后排除冲突依赖,强制使用统一版本。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 16:45:15