JavaFX应用无法识别本地自定义Maven依赖的问题求助
JavaFX项目无法识别本地自定义依赖问题
问题详情
基于Java 21和OpenJFX 21开发的JavaFX应用,编译时无法识别自行编写并存入本地Maven仓库的org.mrpc.CommonUtilities依赖,该依赖已在pom.xml中列为首个条目。
补充信息
依赖org.mrpc.CommonUtilities为自定义开发,已成功安装到本地Maven仓库。
项目配置文件
pom.xml依赖部分
<dependencies> <dependency> <groupId>org.mrpc</groupId> <artifactId>CommonUtilities</artifactId> <version>1.0-SNAPSHOT</version> </dependency> <dependency> <groupId>org.openjfx</groupId> <artifactId>javafx-controls</artifactId> <version>21</version> </dependency> <dependency> <groupId>org.openjfx</groupId> <artifactId>javafx-fxml</artifactId> <version>21</version> </dependency> <dependency> <groupId>org.controlsfx</groupId> <artifactId>controlsfx</artifactId> <version>11.1.2</version> </dependency> <dependency> <groupId>com.dlsc.formsfx</groupId> <artifactId>formsfx-core</artifactId> <version>11.6.0</version> <exclusions> <exclusion> <groupId>org.openjfx</groupId> <artifactId>*</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>net.synedra</groupId> <artifactId>validatorfx</artifactId> <version>0.4.0</version> <exclusions> <exclusion> <groupId>org.openjfx</groupId> <artifactId>*</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>org.kordamp.ikonli</groupId> <artifactId>ikonli-javafx</artifactId> <version>12.3.1</version> </dependency> <dependency> <groupId>org.kordamp.bootstrapfx</groupId> <artifactId>bootstrapfx-core</artifactId> <version>0.4.0</version> </dependency> </dependencies>
module-info.java文件
module org.sperbolink.monthlyfinances { requires javafx.controls; requires javafx.fxml; requires org.controlsfx.controls; requires com.dlsc.formsfx; requires net.synedra.validatorfx; requires org.kordamp.ikonli.javafx; requires org.kordamp.bootstrapfx.core; requires org.mrpc.utilities; opens org.sperbolink.monthlyfinances to javafx.fxml; exports org.sperbolink.monthlyfinances; }
Maven依赖树输出
[INFO] org.sperbolink:MonthlyFinances:jar:1.0-SNAPSHOT [INFO] +- org.mrpc:CommonUtilities:jar:1.0-SNAPSHOT:compile [INFO] +- org.openjfx:javafx-controls:jar:21:compile [INFO] | +- org.openjfx:javafx-controls:jar:win:21:compile [INFO] | \- org.openjfx:javafx-graphics:jar:21:compile [INFO] | +- org.openjfx:javafx-graphics:jar:win:21:compile [INFO] | \- org.openjfx:javafx-base:jar:21:compile [INFO] | \- org.openjfx:javafx-base:jar:win:21:compile
编译错误信息
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.11.0:compile (default-compile) on project MonthlyFinances: Compilation failure [ERROR] /D:/NonGitRepo/MonthlyFinances/src/main/java/module-info.java:[10,22] module not found: org.mrpc.utilities
问题原因
错误提示明确指向模块未找到,核心问题在于自定义依赖的模块声明与当前项目引用的模块名不匹配,或者该依赖未正确配置为Java模块化项目,导致JVM模块系统无法识别。
解决步骤
1. 检查自定义依赖的模块声明
打开org.mrpc.CommonUtilities项目的src/main/java/module-info.java:
- 如果是模块化项目,确认模块名是否为
org.mrpc.utilities,必须与当前项目requires的名称完全一致 - 如果没有
module-info.java,说明该依赖是非模块化项目,需要调整当前项目的引用方式
2. 修复自定义依赖的模块化配置(若为模块化项目)
如果org.mrpc.CommonUtilities是模块化项目,确保其module-info.java的模块名正确:
module org.mrpc.utilities { exports org.mrpc.utilities; // 导出需要被引用的包 // 若依赖其他模块,添加对应的requires声明 }
重新执行mvn clean install将更新后的依赖安装到本地仓库。
3. 调整当前项目的模块引用(若依赖为非模块化)
如果org.mrpc.CommonUtilities是非模块化项目,修改当前项目的module-info.java,使用requires static引用非模块化依赖:
module org.sperbolink.monthlyfinances { requires javafx.controls; requires javafx.fxml; requires org.controlsfx.controls; requires com.dlsc.formsfx; requires net.synedra.validatorfx; requires org.kordamp.ikonli.javafx; requires org.kordamp.bootstrapfx.core; requires static org.mrpc.utilities; // 改为static引用非模块化依赖 opens org.sperbolink.monthlyfinances to javafx.fxml; exports org.sperbolink.monthlyfinances; }
4. 清理Maven缓存并重新编译
执行以下命令清理本地仓库缓存,避免缓存导致的依赖识别问题:
mvn clean install -U
内容的提问来源于stack exchange,提问作者Todd
相关产品推荐
相关产品推荐

