我在JLS中找不到任何提及,它仅讨论编译单元在未命名包中时如何放置在未命名模块中。
背景:许多库需要用户代码才能将具有特定名称的配置文件放入未命名(默认)包中。我想知道JLS是否保证在使用模块时可以通过ClassLoader::getSystemResourceAsStream
找到这些资源。看来可行,但是我想有一个消息源。
这是有道理的,因为opens ""
没有语法,因此唯一明确的方法是打开模块本身。
答案 0 :(得分:1)
我认为这很清楚。
一个未命名的模块会导出每个经过常规编译的软件包 单元与该未命名模块相关联。
一个未命名的模块会打开每个具有普通编译单元的包 与该未命名模块关联。
关于关联:
主机系统必须将普通编译单元关联到一个 未命名的程序包,其中包含未命名的模块(第7.7.5节),而不是未命名的模块。
注意:它是在谈论导出软件包,而不是导出编译单元,因此该语句涵盖了软件包中的资源。