使用Jackson读写YAML时遇TSFBuilder类未找到错误求助
问题解决:Jackson YAML 依赖版本不兼容导致 NoClassDefFoundError
问题根源
- Jackson组件版本不一致:你使用的
jackson-dataformat-yaml版本是2.7.0,而jackson-databind和jackson-core是2.16.0。跨大版本的依赖会引发类缺失——TSFBuilder是Jackson 2.10+版本才加入的类,低版本的jackson-dataformat-yaml依赖的旧版core中没有这个类,导致运行时找不到。 - 依赖未实际引入项目:
<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
相关产品推荐
相关产品推荐

