列出应用程序启动期间解析的模块

Nam*_*man 5 java java-9 java-module module-info

如何在启动应用程序时了解已解析的模块列表,以便确定从根模块可以访问的所有服务提供程序.

Nam*_*man 5

模块解析

所述模块的分辨率 是一个两步骤的过程.

  • 第一步递归枚举一组根模块的'requires'指令.
  • 如果所有枚举模块都是可观察的,那么第二步计算它们的可读性图.可读性图表体现了模块如何相互依赖,而模块又控制跨模块边界的访问.

可以 通过VM参数使用java工具文档中提到的调试标志:

--show-module-resolution
Run Code Online (Sandbox Code Playgroud)

显示启动期间的模块分辨率输出

例如,该选项将列出:

  • 根模块
  • 根模块需要和解决的所有模块
  • 上述所需模块使用的进一步绑定
  • 在启动期间解决了连续模块

在运行以下命令时:

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
Run Code Online (Sandbox Code Playgroud)

它导致以下结果: -

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
...
Run Code Online (Sandbox Code Playgroud)