使用Apache POI的JavaFX应用启动失败,提示依赖模块未找到
解决JavaFX项目中Apache POI的模块依赖缺失问题
问题原因
org.apache.poi.ooxml模块依赖的SparseBitSet和commons.math3属于自动模块(没有自带module-info.java),在Java模块化项目中,必须显式声明对这些自动模块的依赖,否则模块启动时会找不到它们。
解决方案
1. 修改module-info.java
在你的模块声明文件中,添加对这两个自动模块的requires声明:
module 你的模块名 { requires javafx.controls; requires javafx.fxml; requires org.apache.poi.ooxml; // 新增以下两行依赖声明 requires org.apache.commons.sparsebitset; requires org.apache.commons.math3; opens 你的包名 to javafx.fxml; exports 你的包名; }
注意替换代码中的「你的模块名」和「你的包名」为项目实际的模块名称与包路径。
2. 同步Gradle依赖
虽然你已在外部库中看到这两个依赖,仍需确保Gradle完成依赖同步:
- 在IntelliJ中点击Gradle工具栏的「Refresh all Gradle projects」按钮;
- 或执行命令:
./gradlew build --refresh-dependencies。
3. 检查运行配置
若仍报错,检查IntelliJ的运行配置:
- 打开「Run/Debug Configurations」,确认「VM options」中没有手动限制模块路径的参数,确保Gradle自动生成的模块路径包含所有依赖。
内容的提问来源于stack exchange,提问作者Joseph Sang
相关产品推荐
相关产品推荐

