【发布时间】:2018-11-13 22:47:52
【问题描述】:
有一种机制可以将常规 jar 转换为从 java-9 开始的 automatic module,只需将其放在 modulepath 上而不是 classpath 上。自动模块具有以下属性:
自动模块是隐式定义的命名模块, 因为它没有模块声明。每个包裹在一个 因此,自动模块被认为是导出的,即使它 实际上可能仅供内部使用。
因此,自动模块内的所有包都可用。但是,如果我们使用 --describe-module 指令检查自动模块,则输出中没有 exports 部分。
例如一个自动模块main
jar --file main.jar --describe-module
com.foo jar:file:///.../code/module/main.jar/!module-info.class
requires java.base mandated
contains com.foo
如果包com.foo 无论如何都被认为是导出的,为什么没有exports 部分?我觉得这有点令人困惑:--describe-module 表明没有导出包,但同时,main 是一个自动模块,所以所有内容都隐式导出 .
【问题讨论】:
标签: java-9 java java-9 java-module java-platform-module-system