3

我正在浏览 API 文档jdk.accessibility并注意到它分别列出了所有这些。

  1. 一个模块中具有作用域requires 的模块都在消耗模块的间接需求

  2. module-info.java模块如下:

    module jdk.accessibility {
        requires transitive java.desktop;
    
        exports com.sun.java.accessibility.util;
    }
    

    和 forjava.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 适应模块结构。

4

1 回答 1

5

请注意,在:

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

于 2017-08-24T13:43:06.067 回答