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

创建ITextRenderer对象时触发java.lang.NoClassDefFoundError异常求助

解决Flying Saucer OpenPDF生成PDF时的NoClassDefFoundError异常

问题原因

java.lang.NoClassDefFoundError: javax/xml/transform/TransformerConfigurationException 异常说明运行时缺失XML转换相关类——这类类属于JAXP(Java API for XML Processing)规范,Flying Saucer解析XHTML时依赖该规范的实现。

在Java 9及以上版本中,JAXP相关包不再默认纳入JDK核心模块;即使是Java 8环境,也可能因Maven依赖传递缺失导致该类无法被找到。

解决方案

1. 补充JAXP API依赖

在Maven pom.xml 中添加以下依赖,确保XML转换类能被正确加载:

<dependency>
    <groupId>javax.xml</groupId>
    <artifactId>jaxp-api</artifactId>
    <version>1.4.2</version>
</dependency>

若需兼容Java 9+模块系统,可替换为:

<dependency>
    <groupId>jakarta.xml.bind</groupId>
    <artifactId>jakarta.xml.bind-api</artifactId>
    <version>3.0.1</version>
</dependency>

2. 升级Flying Saucer版本

你当前使用的9.1.20版本较老旧,存在高版本Java环境兼容性问题。建议升级到最新稳定版(如9.1.26),新版本已优化依赖管理,可能自动解决此类缺失问题:

<dependency>
    <groupId>org.xhtmlrenderer</groupId>
    <artifactId>flying-saucer-pdf-openpdf</artifactId>
    <version>9.1.26</version>
</dependency>
<dependency>
    <groupId>org.xhtmlrenderer</groupId>
    <artifactId>flying-saucer-core</artifactId>
    <version>9.1.26</version>
</dependency>

3. 校验依赖完整性

执行mvn dependency:tree命令,检查依赖树中是否包含jaxp-api或相关XML处理依赖,确认没有被意外排除。

验证修改

更新依赖后重新运行代码,应能正常创建ITextRenderer实例并生成PDF。若仍有问题,检查项目Java版本是否与依赖兼容(推荐Java 8或Java 11)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 14:55:23