为了理解我们的类别:
>平台显式模块
>应用程序显式模块
>打开模块
>自动模块
>未命名的模块
类路径中的所有类和jar都将是未命名模块的一部分.但为什么我们需要什么呢?自动模块的优势在哪里?我可以“要求”那些该死的传统罐子,使它们成为一个自动模块.我没有把它包括在内吗?
解决方法
至少有两个原因:
>正如常规模块一样,自动模块对模块系统的某些检查是可疑的,例如: not splitting packages.由于类路径上的JAR可以(并且偶尔会)拆分包,因此对它们进行检查将是向后兼容的并且会破坏许多应用程序.
>未命名的模块可以读取所有平台模块,而自动模块只能读取那些进入模块图的模块.这意味着需要java.desktop模块(例如)的JAR将从类路径开始工作,但不能从模块图中工作,除非java.desktop也将其放入图形中(通过依赖项或–add-modules).
我现在没时间检查第二个,但这是the State of the Module system所说的:
After a module graph is resolved,therefore,an automatic module is made to read every other named module,whether automatic or explicit