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

标签 java compilationunit

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

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

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

最佳答案

我认为这很清楚。

An unnamed module exports every package whose ordinary compilation units are associated with that unnamed module.

An unnamed module opens every package whose ordinary compilation units are associated with that unnamed module.

关于协会:

The host system must associate ordinary compilation units in an unnamed package with an unnamed module (§7.7.5), not a named module.

Source

注意:这里说的是导出包,而不是导出编译单元,所以包中的资源都在这个声明中。

关于java - 命名模块的未命名包中的非编译单元是否打开?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58132168/

相关文章:

java - 无法获取 JSON 对象类型数组

package - 艾达,看看我的包裹。 ("compilation unit expected"?)

java - Eclipse Java 编译器警告作为 ant 任务

java - Dropwizard 0.8 和 Jetty 在资源上失败返回 404

c++ - Unresolved 符号错误

java - Eclipse 抽象语法树差异

c++ - 编译器和链接器如何处理类和函数

java - 这是否被视为循环依赖(这是一种好习惯)?

java - Tomcat 上的 JSP Spring 应用程序未传送页面

java - GenericObjectPool 中的过期 session