Java9中导出、间接导出、Requires和间接Requires之间的区别?
我正在浏览API文档,注意到它分别列出了所有这些Java9中导出、间接导出、Requires和间接Requires之间的区别?,java,java-9,java-platform-module-system,access-specifier,Java,Java 9,Java Platform Module System,Access Specifier,我正在浏览API文档,注意到它分别列出了所有这些 在一个模块中具有作用域requires的模块是否都是消费模块的间接requires 模块的module info.java如下所示: module jdk.accessibility { requires transitive java.desktop; exports com.sun.java.accessibility.util; } 而对于java.desktop则类似于(试图包括变化的- module java.des
requires
的模块是否都是消费模块的间接requiresmodule 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
作为Requires或间接Requires或间接导出。这里不一致的原因是什么module java.desktop {
...
...
exports sun.awt to
javafx.swing,
jdk.accessibility,
oracle.desktop;
}
sun.awt
是一个包,而不是一个模块名。(这是另一个例子。)因此,文档中不会提到sun.awt
,因为已经引用了java.desktop
编辑:另外,请注意,对于
jdk.accessibility
模块的客户端,sun.awt
包是不可访问的。也就是说,它是由java.desktop
导出的,供jdk.accessibility
使用,但没有成为其API的一部分。我已经确认()即使jdk.accessibility
要求java.desktop
作为transitive
不作为包提及,这也是我的意思。我已经用我理解的问题的信息更新了答案。如果模块a“将sun.awt导出到B”,则B的客户端无法看到“sun.awt”,即使B看到了A上的“要求可传递”。