eclipse 为什么我不需要java.base?

wn9m85ua  于 2022-12-12  发布在  Eclipse
关注(0)|答案(2)|浏览(137)

当我尝试导入javax.swing.JFrame时,eclipse会抱怨,因为我需要明确告诉我的包我将从java.desktop模块导入内容。所以我将requires java.desktop放在我的module-info.java中,然后java编译器知道链接java.desktop的内容。我也可以将requires java.base放在我的module-info.java中。但似乎没有必要。我可以不使用它。
eclipse是否在幕后给我的javac选项添加了一些酱料?javac是否自动要求java.base?为什么我不需要要求java.base?如果这是编译器的魔力,是否还有其他这样的特权模块自动链接到我的包中?
使用jdk-14,但不确定是否相关。

hmae6n7t

hmae6n7t1#

这在JLS 7.7.1中有规定:

7.7.1.依赖关系

requires指令指定当前模块依赖的模块的名称。
requires指令不能出现在java.base模块的声明中,否则会发生编译时错误,因为它是原始模块,没有依赖关系(参见8.1.4节)。

如果模块的声明不表示对java.base模块的依赖关系,并且该模块本身不是java.base,则该模块对java.base模块具有隐式声明的依赖关系。

这类似于java.lang包中的类被隐式导入到源文件中,模块不需要显式声明它们依赖于java.base模块。

qyuhtwio

qyuhtwio2#

这是因为JVM提供的所有平台模块都是可观察的模块。默认情况下,如果您正在创建模块,则不需要这些平台模块。这些模块导出的包可以导入,而无需在www.example.com文件中使用任何require指令module-info.java。您可以使用此命令获取可观察/平台模块的列表。

java --list-modules

相关问题