命名模块的未命名包中的非编译单元是否打开?

时间:2019-09-27 09:53:55

标签: java compilationunit

我在JLS中找不到任何提及,它仅讨论编译单元在未命名包中时如何放置在未命名模块中。

背景:许多库需要用户代码才能将具有特定名称的配置文件放入未命名(默认)包中。我想知道JLS是否保证在使用模块时可以通过ClassLoader::getSystemResourceAsStream找到这些资源。看来可行,但是我想有一个消息源。

这是有道理的,因为opens ""没有语法,因此唯一明确的方法是打开模块本身。

1 个答案:

答案 0 :(得分:1)

我认为这很清楚。

  

一个未命名的模块会导出每个经过常规编译的软件包   单元与该未命名模块相关联。

     

一个未命名的模块会打开每个具有普通编译单元的包   与该未命名模块关联。

关于关联:

  

主机系统必须将普通编译单元关联到一个   未命名的程序包,其中包含未命名的模块(第7.7.5节),而不是未命名的模块。

Source

注意:它是在谈论导出软件包,而不是导出编译单元,因此该语句涵盖了软件包中的资源。