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

jmod create报错module-info.class不存在但文件实际存在于jar中

问题产生原因

报错的核心原因是你使用的bcprov-jdk18on-171.jar属于多版本JAR(Multi-Release JAR, MR-JAR),从jar命令的输出可以看到,它的module-info.class没有存放在JAR包根目录,而是存放在Java 9版本化目录META-INF/versions/9/下,仅在Java 9及以上运行环境加载JAR时才会被读取。
而jmod create工具的默认逻辑是:从--class-path传入的JAR包根目录查找module-info.class文件,不会自动识别、读取多版本JAR中嵌套在版本化目录下的模块描述文件,因此即使文件确实存在于JAR包内,工具也会抛出找不到文件的错误,和module-info本身是否合法有效无关。

操作存在的错误点
  • 未识别目标JAR的多版本属性,直接将未做处理的MR-JAR作为--class-path参数传入jmod命令,忽略了jmod工具不支持自动解析MR-JAR版本化目录内module-info的默认行为限制。
  • 未针对多版本JAR做前置适配就直接执行jmod打包,可参考以下两种方案修复:
    • 方案1:解压目标JAR包,将META-INF/versions/9/module-info.class移动到JAR包根目录,重新打包后再执行原jmod create命令即可正常识别模块信息
    • 方案2:不依赖JAR包内置的module-info,提前单独编译模块描述文件,或通过jmod命令的--module-version、--hash-modules等参数显式指定模块配置完成打包

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 17:12:29