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

Java使用--add-reads无法识别模块m1,但--list-modules可检测到该模块

解决--add-reads无法识别已存在模块的问题

这个问题其实是JVM模块系统的一个常见行为:当你运行某个模块时,JVM只会自动加载该模块显式依赖的模块——哪怕其他模块在模块路径里(就像你的m1用--list-modules能看到),只要没被依赖,就不会被加载到JVM的模块池中,这时候--add-reads自然找不到它。

快速解决方案

只需要在命令中添加--add-modules m1,强制JVM预先加载m1模块,这样--add-reads就能正确识别并建立m2到m1的读取关系了。修正后的完整命令:

java -p M2/bin:M1/bin --add-modules m1 --add-reads m2=m1 -m m2/p2.C2

额外说明

如果你需要长期让m2读取m1,更规范的做法是修改m2的module-info.java,直接声明依赖:

module m2 {
    requires m1;
}

这样编译后,运行时就不需要额外的命令行参数了。但如果只是临时测试或调试,用--add-modules + --add-reads的组合就非常方便。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:29:16