我正在查看jdk.accessibility
的API文档,并注意到它会单独列出所有这些文档。
一个模块中范围为requires
的模块都在消耗模块的间接需求?
模块的module-info.java
如下:
module jdk.accessibility {
requires transitive java.desktop;
exports com.sun.java.accessibility.util;
}
和java.desktop
类似(试图包括变化 -
module java.desktop {
...
requires java.prefs;
...
requires transitive java.xml;
exports java.applet;
...
exports sun.awt to
javafx.swing,
jdk.accessibility,
oracle.desktop;
opens javax.swing.plaf.basic to jdk.jconsole;
...
uses javax.sound.sampled.spi.MixerProvider;
...
provides javax.sound.sampled.spi.MixerProvider with
com.sun.media.sound.DirectAudioDeviceProvider,
com.sun.media.sound.PortMixerProvider;
但是jdk.accessibility
的文档没有将sun.awt
提及为“需要”或“间接需求”或“间接导出”。这里出现不一致的原因是什么?
寻找可以帮助理解(2)中发生的事情的这些差异的示例,以及我们应该遵循什么来使用Java9来适应模块结构。
答案 0 :(得分:5)
请注意:
module java.desktop {
...
...
exports sun.awt to
javafx.swing,
jdk.accessibility,
oracle.desktop;
}
sun.awt
是一个包,而不是模块名称。 (Here是另一个例子。)因此,文档中不会提及sun.awt
,因为java.desktop
已被引用。
修改另请注意,对于jdk.accessibility
模块的客户端,无法访问sun.awt
包。也就是说,它由java.desktop
导出以供 jdk.accessibility
使用,但不会成为其API的一部分。我已确认(example here)即使jdk.accessibility
要求java.desktop
为transitive
,也是如此。