You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Maven 3.9.3构建JPMS模块时出现Package缺失报错求助

JPMS模块在Maven 3.9.3构建失败的原因分析

环境信息

  • Maven 3.8.5版本详情:
Apache Maven 3.8.5 (3599d3414f046de2324203b78ddcf9b5e4388aa0)
Maven home: /opt/netbeans-14/java/maven
Java version: 21.0.1, vendor: Oracle Corporation, runtime: /opt/jdk-21.0.1
  • Maven 3.9.3版本详情:
Apache Maven 3.9.3 (21122926829f1ead511c958d89bd2f672198ae9f)
Maven home: /opt/netbeans-19/java/maven
Java version: 21.0.1, vendor: Oracle Corporation, runtime: /opt/jdk-21.0.1

问题现象

使用Maven 3.8.5执行clean install构建JPMS模块时无异常,但切换到Maven 3.9.3执行相同命令,出现如下构建失败报错:

[INFO] --- jar:3.3.0:jar (default-jar) @ mymodule-impl ---
[INFO] Building jar: /home/pavel/mymodule-impl/target/mymodule-impl-1.0.0.jar
jar: Package a.b.c missing from ModulePackages class file attribute
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
Total time:  3.386 s
Finished at: 2023-11-03T20:34:05+02:00
------------------------------------------------------------------------
Failed to execute goal org.apache.maven.plugins:maven-jar-plugin:3.3.0:jar (default-jar) on project mymodule-impl: Error assembling JAR: Could not create modular JAR file. The JDK jar tool exited with 1 -> [Help 1]

报错原因

核心原因是JPMS模块的module-info.class中声明了包a.b.c,但最终生成的JAR里没有该包对应的类文件或资源。

Maven 3.9.x系列对JPMS模块的校验逻辑更严格:

  1. Maven 3.8.5搭配的maven-jar-plugin版本较低,对JPMS模块的包声明校验不严格,即使module-info里声明的包实际不存在,也能完成构建;
  2. Maven 3.9.3使用的maven-jar-plugin 3.3.0会调用JDK的jar工具执行严格校验,一旦发现module-info中声明的包在JAR中不存在,就会触发该错误。

是否属于Bug?

这不属于Bug,而是Maven生态对JPMS规范的严格落地。JPMS本身要求module-info中声明的所有包必须在模块内存在,Maven 3.9.x及对应插件版本只是强化了这一规范的校验,避免生成不符合JPMS标准的模块化JAR。

解决方案

  • 检查module-info.java,移除那些声明了但实际不存在的包(比如a.b.c);
  • 如果a.b.c包是模块必需的,确认该包下的类文件是否被正确编译,且是否被maven-compiler-plugin正确处理并打包到JAR中;
  • 若需临时绕过校验(不推荐,会生成不规范模块JAR),可尝试升级maven-jar-plugin至3.4.0及以上版本,或在插件配置中关闭JPMS严格校验。

内容的提问来源于stack exchange,提问作者user5182503

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 21:15:57