如何解决Java使用iText时出现org.slf4j.LoggerFactory缺失的错误
报错根因
你遇到的java.lang.NoClassDefFoundError: org/slf4j/LoggerFactory错误和你的业务代码无关,属于iText 7的依赖缺失问题:iText 7的内核组件默认依赖SLF4J作为日志门面,你当前项目只引入了iText本身的jar包,没有同步引入它依赖的SLF4J相关包,运行时类加载器找不到对应类就会抛出该错误。
修复方案
分两种项目场景操作即可:
1. 用Maven/Gradle做依赖管理的项目
直接在依赖配置中添加SLF4J依赖即可,以Maven为例,在pom.xml的<dependencies>节点下加入:
<!-- slf4j核心API,和iText 7.1/7.2版本兼容推荐用1.7.x系列 --> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>1.7.36</version> </dependency> <!-- 简单日志实现,不需要复杂日志配置的话用这个即可 --> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-simple</artifactId> <version>1.7.36</version> </dependency>
刷新依赖后重新运行项目即可。
2. 手动导入Jar包的NetBeans普通项目
- 下载版本为1.7.36的
slf4j-api.jar和slf4j-simple.jar两个包 - 打开NetBeans的项目属性页,找到「库」选项,把两个jar包添加到项目的编译和运行时依赖中
- 清理NetBeans缓存后重新编译运行即可
注意事项
- 不要混用SLF4J的大版本,比如slf4j-api 2.x系列和iText 7.1及更早版本存在兼容性问题,会触发新的类加载错误
- 如果添加依赖后仍报错,可检查你项目的运行时类路径是否已包含这两个SLF4J包,部分IDE会存在编译时依赖加入但运行时未加载的问题
内容的提问来源于stack exchange,提问作者Fl00der
相关产品推荐
相关产品推荐

