Maven编译报错:module not found: vertx.core 求助
解决Maven编译JPMS模块时找不到vertx.core的问题
你的问题核心在于Maven编译器插件版本过低,对Java 9+模块系统(JPMS)支持不足,结合你的项目场景,我整理了几个关键修复步骤:
1. 升级maven-compiler-plugin到支持Java 10的版本
你当前使用的maven-compiler-plugin 3.5.1是2016年的版本,它对Java 9及以后的模块系统兼容度很差。至少需要升级到3.8.0及以上版本(该版本开始全面支持JPMS)。
推荐在根pom的<pluginManagement>中统一配置插件版本,让所有子模块继承:
<project> <!-- 原有配置... --> <build> <pluginManagement> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <!-- 升级到适配Java 10的稳定版本 --> <version>3.8.1</version> <configuration> <source>${java.version}</source> <target>${java.version}</target> </configuration> </plugin> </plugins> </pluginManagement> </build> </project>
之后Utils子模块的pom.xml里只需声明插件,无需重复写版本和配置:
<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> </plugin> </plugins> </build>
2. 确认Vert.x自动模块的名称兼容性
Vert.x 3.5.0的vertx-core jar没有内置module-info.java,会被Java编译器当作自动模块。自动模块的名称由jar文件名推导而来(去掉版本号,连字符替换为点),也就是vertx.core,这和你在module-info.java中写的一致,所以这部分无需修改。
3. 重新编译验证
完成配置修改后,先清理并安装父模块到本地仓库:
mvn clean install -N
(-N参数表示仅处理当前项目,不触发子模块构建)
然后执行子模块编译:
mvn clean compile
这样应该就能解决编译时找不到vertx.core模块的问题了。
内容的提问来源于stack exchange,提问作者aiko
相关产品推荐
相关产品推荐

