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

使用Jackson读写YAML时遇TSFBuilder类未找到错误求助

问题解决:Jackson YAML 依赖版本不兼容导致 NoClassDefFoundError

问题根源

  1. Jackson组件版本不一致:你使用的jackson-dataformat-yaml版本是2.7.0,而jackson-databind和jackson-core是2.16.0。跨大版本的依赖会引发类缺失——TSFBuilder是Jackson 2.10+版本才加入的类,低版本的jackson-dataformat-yaml依赖的旧版core中没有这个类,导致运行时找不到。
  2. 依赖未实际引入项目:<dependencyManagement>仅用于统一版本管理,不会自动将依赖添加到项目的classpath中,必须在<dependencies>标签内声明需要实际引入的依赖。

修复步骤

1. 修正pom.xml

统一所有Jackson组件的版本,并将依赖从dependencyManagement移到<dependencies>标签内(或在<dependencies>中声明依赖,复用dependencyManagement的版本):

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>org.merkgames</groupId>
    <artifactId>ChatGPT</artifactId>
    <version>1.0-SNAPSHOT</version>

    <!-- 统一管理Jackson版本 -->
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>com.fasterxml.jackson.core</groupId>
                <artifactId>jackson-bom</artifactId>
                <version>2.16.0</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <!-- 实际引入依赖 -->
    <dependencies>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-dataformat-yaml</artifactId>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-core</artifactId>
        </dependency>
    </dependencies>

    <properties>
        <maven.compiler.source>17</maven.compiler.source>
        <maven.compiler.target>17</maven.compiler.target>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>
</project>

说明:

  • 使用jackson-bom可以一次性统一所有Jackson组件的版本,避免手动逐个维护版本号。
  • <dependencies>中的依赖无需指定版本,会自动继承dependencyManagement中jackson-bom的版本。

2. 刷新Maven依赖

在IntelliJ IDEA中点击右侧Maven面板的「Reload All Maven Projects」按钮,确保新的依赖被下载并加载到项目中。

3. 验证代码运行

你的Main.java代码无需修改,重新运行main方法即可正常生成example.yml文件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 09:25:55