列出应用程序启动期间解析的模块
List the modules resolved during the application startup
如何在应用程序启动的时候知道已经解析的模块列表,从而找出根模块可以访问的所有服务提供者。
模块分辨率
module resolution 是一个两步过程。
- 第一步递归枚举一组根模块的'requires'指令。
- 如果所有枚举模块都是可观察的,那么第二步计算它们的可读性图。可读性图体现了模块如何相互依赖,进而控制跨模块边界的访问。
可以通过 VM 参数使用 java
tool documentation 中提到的调试标志:
--show-module-resolution
Shows module resolution output during startup.
For example,选项会列出来:
- 根模块
- 根模块需要并解析的所有模块
- 以上所需模块使用的进一步绑定和
- 在启动期间解决了连续的模块
在 运行 上执行以下命令:
Jigsaw git:(master) ✗ ../jdk-9.0.1.jdk/Contents/Home/bin/java
--show-module-resolution
-p ../out/production/100DaysOfJava9
-m HundredDaysOfJavaNine/com.Whosebug.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
...
如何在应用程序启动的时候知道已经解析的模块列表,从而找出根模块可以访问的所有服务提供者。
模块分辨率
module resolution 是一个两步过程。
- 第一步递归枚举一组根模块的'requires'指令。
- 如果所有枚举模块都是可观察的,那么第二步计算它们的可读性图。可读性图体现了模块如何相互依赖,进而控制跨模块边界的访问。
可以通过 VM 参数使用 java
tool documentation 中提到的调试标志:
--show-module-resolution
Shows module resolution output during startup.
For example,选项会列出来:
- 根模块
- 根模块需要并解析的所有模块
- 以上所需模块使用的进一步绑定和
- 在启动期间解决了连续的模块
在 运行 上执行以下命令:
Jigsaw git:(master) ✗ ../jdk-9.0.1.jdk/Contents/Home/bin/java --show-module-resolution -p ../out/production/100DaysOfJava9 -m HundredDaysOfJavaNine/com.Whosebug.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
...