Java项目使用Apache POI报错Module org.slf4j not found问题求助
问题根因
该报错是Java平台模块系统(JPMS)抛出的依赖缺失错误,Apache POI组件的运行依赖slf4j日志框架,你仅添加了POI自身的jar包,未同步引入slf4j相关依赖到模块路径,因此触发模块查找失败。
Error occurred during initialization of boot layer
java.lang.module.FindException: Module org.slf4j not found, required by org.apache.poi.poi
解决方案
- 补充slf4j依赖包
下载匹配POI版本的slf4j-api.jar,以及简单实现包slf4j-simple.jar(测试场景无需额外配置),将两个jar包和POI的所有jar包一同添加到项目的模块路径中。 - 配置模块声明文件
若你的项目启用了JPMS模块系统,找到项目根目录下的module-info.java,添加如下依赖声明:
请将上述代码中的module yourModuleName { // 声明依赖POI核心模块 requires org.apache.poi.poi; // 声明依赖POI OOXML模块(用于操作xlsx格式) requires org.apache.poi.ooxml; // 声明依赖slf4j模块 requires org.slf4j; }yourModuleName替换为你自己项目的模块名称。 - 无模块场景快速解决
如果你不需要使用JPMS的模块隔离能力,可以将所有POI、slf4j的jar包转移到类路径(classpath)下,同时删除项目中的module-info.java文件,Java会自动以无名模块模式运行,不会触发模块校验报错。
你提供的测试代码逻辑无异常,完成上述配置后即可正常读取Excel文件内容。
内容的提问来源于stack exchange,提问作者drew15487
相关产品推荐
相关产品推荐

