如何从Java 9模块导出所有包?

时间:2017-09-30 12:23:40

标签: java java-9 java-module

现在,对于我拥有的每个模块,我都需要明确指定要导出的包。例如:

module core {
    exports cc.blynk.server.core;
    exports cc.blynk.server.core.protocol.handlers.decoders;
    exports cc.blynk.server.core.protocol.handlers.encoders;
}

然而,这不是很方便。我想做那样的事情:

module core {
    exports cc.blynk.server.core.*;
}

有没有办法做到这一点?这种限制来自何处?

1 个答案:

答案 0 :(得分:12)

的用法
module core {
    exports cc.blynk.server.core.*;
}
不鼓励

,因为这可能主要导致从不同模块导出的不同包中的冲突,这违反了模块化代码的目的。

另外引用其中一个主题:

  

模块导出的包应该是一个稳定的API   消费者可以信赖。出于这个原因,我们制作模块作者   明确说明导出的包。这也拨打了   多个模块不必要地导出相同包的可能性。   此外,它避免了com.abs.*时可能出现的混淆   导出com.abs.foo时导出时没有限定条件   资格。