2017-10-14 95 views
0

如果module-info.java引用带有“Automatic-Module-Name”设置的自动模块,为什么Java 9编译器会警告“需要自动模块指令”?这些模块有什么风险?为什么javac会抱怨命名的自动模块?

这个问题不是What is an automatic module?的确切副本,因为后者没有解决我引用的编译器警告背后的具体原因(问题的上下文很重要)。也就是说,这是后续阅读的有用链接。

+2

虽然不是一个确切的副本,但恕我直言,这个答案已在[什么是自动模块?](https://stackoverflow.com/questions/46741907/what-is-an-automatic-module )..只是它没有具体包括雷米的前景。 – nullpointer

+4

可能重复[什么是自动模块?](https://stackoverflow.com/questions/46741907/what-is-an-automatic-module) – ZhekaKozlov

+2

顺便说一句,你可以通过使用javac的额外选项来禁用此警告“ - Xlint“,例如”-Xlint:all,-requires-automatic“,意思是”启用所有警告,但警告在需要子句中使用自动模块“。 – Male

回答

2

报价Remi Forax

的主要问题是自动模块可以看到类的类路径,但它也出口其所有的包装,所以没有封装,一旦你需要一个自动模块,所有自动来自模块路径的模块是可见的。

所以,当你转换到模块世界时,自动模块是一个很好的工具,但很好,你不需要任何自动模块在你的依赖关系图中。

+0

不要误解我的意思,但每次我阅读这个答案时,我都觉得这已经在重复链接问题中讨论过了。这里有什么不同,你是否也可以把它放在答案中? – nullpointer

+0

@nullpointer链接问题的接受答案详细讨论了自动模块。如果我们要把这个问题作为一个重复来解决,那么就不清楚哪个子页面的这个2页的答案能够解决编译器的警告。这就像问“为什么我得到这个Java编译器错误?”和发布Java语言规范的人作为答案。当然,答案是在那里,但祝你好运找到它:) – Gili

+0

如果你知道,它有一个好东西要指出,你可以建议(评论),并编辑答案,以显示信息。提出另一个问题,从中提出具体的专栏也是没有道理的。 – nullpointer

相关问题