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

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

模块解析

模块分辨率分为两步。

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

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

 --show-module-resolution 

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

例如 ,该选项将列出:

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

在运行以下命令时:

 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 ...