使用 --add-reads 运行 java 无法识别模块,即使它在使用 --list-modules 运行时出现

Iva*_*van 3 java java-module

给定两个模块m1并m2在模块路径上:

java -version
openjdk version "11.0.2" 2019-01-15

java -p M2/bin:M1/bin --list-modules
...
m1 <path>M1/bin/
m2 <path>M2/bin/
Run Code Online (Sandbox Code Playgroud)

运行 modulem2并指定--add-readsfromm2到时m1:

java -p M2/bin:M1/bin --add-reads m2=m1 -m m2/p2.C2
WARNING: Unknown module: m1 specified to --add-reads
...
Run Code Online (Sandbox Code Playgroud)

Java 无法看到该模块m1,即使在使用时--list-modules它是清晰可见的。

如何识别--add-reads模块?

Iva*_*van 5

requires与in不同module-info.java,--add-reads不会将模块添加到模块图中,即使文档说--add-reads:This is, essentially, a command-line form of a requires clause in a module declaration。事实证明,实际等价物--add-modules与--add-reads:

java -p M2/bin:M1/bin --add-modules m1 --add-reads m2=m1 -m m2/p2.C2
Run Code Online (Sandbox Code Playgroud)