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

标签 java java-9 java-module java-platform-module-system module-info

如何在应用程序启动时了解已解析的模块列表,从而找出从根模块可以访问的所有服务提供者。

最佳答案

模块分辨率

module resolution是一个两步过程。

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

可以使用 java tool documentation 中提到的调试标志通过 VM 参数:

--show-module-resolution

Shows module resolution output during startup.

For example ,该选项将列出:

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

在运行以下命令时:

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

关于java - 列出应用程序启动期间解析的模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48339598/

相关文章:

Java小程序白屏

java - 如何在 Android 中使用 json 响应显示数据库中的表格? (我在这段代码中收到 JsonArray Fail 错误)

java - 无法使 Maven 测试范围的依赖项与 Java 9(或 10)模块一起使用

java - 使用 java 9 ea,Eclipse 无法安装并显示错误 "An error has occurred, see the log file null"

java - 使 Action 监听器(数组)更改值

java - 如何在android中获取特定格式的字符串

java - 自动包含数字的模块名称

java - 什么是 Java 9 中的开放模块以及如何使用它?

java - 如何在 Java 9 中按类获取模块名称?