模块分辨率
这个
module resolution
是一个两步过程。
-
第一步递归枚举一组根模块的“requires”指令。
-
如果所有枚举模块都是可观察的,则第二步计算其可读性图。可读性图体现了模块之间如何相互依赖,进而控制跨模块边界的访问。
可以使用中提到的调试标志
java
tool documentation
通过VM参数:
--show-module-resolution
显示启动期间的模块分辨率输出。
For example
,选项将列出:
-
根模块
-
根模块需要并解决的所有模块
-
上述所需模块使用的其他绑定,以及
-
启动期间解决的连续模块
运行以下命令时:
Jigsaw git:(master) â ../jdk-9.0.1.jdk/Contents/Home/bin/java
--show-module-resolution
-p ../out/production/100DaysOfJava9
-m HundredDaysOfJavaNine/com.stackoverflow.nullpointer.Challenge1
其结果如下:-
root HundredDaysOfJavaNine file:///.../out/production/100DaysOfJava9/
HundredDaysOfJavaNine requires jdk.incubator.httpclient jrt:/jdk.incubator.httpclient
java.base binds jdk.localedata jrt:/jdk.localedata
java.base binds java.security.jgss jrt:/java.security.jgss
java.base binds java.logging jrt:/java.logging
java.base binds jdk.javadoc jrt:/jdk.javadoc
java.base binds jdk.jartool jrt:/jdk.jartool
java.base binds jdk.jlink jrt:/jdk.jlink
java.base binds jdk.compiler jrt:/jdk.compiler
java.base binds jdk.jdeps jrt:/jdk.jdeps
java.base binds java.desktop jrt:/java.desktop
java.base binds jdk.zipfs jrt:/jdk.zipfs
...