默认情况下,模块路径上有哪些系统模块?
Which system modules are on the module path by default?
当我通过 java -cp
(没有 --add-modules
或 --limit-modules
)运行 应用程序时,一些 Java 系统模块是可观察的,而其他的则不是.
例如,所有 java.se
模块都是可观察的。所有 java.se.ee
个模块都不可观察。我知道 javafx.*
模块是可观察的。 jdk.unsupported
和 jdk.shell
也是可见的。
所以,我的假设是否正确:如果没有指定 --add-modules
和 --limit-modules
,则可观察系统模块集包含除 java.se.ee
之外的所有系统模块?
是否有可靠的方法来了解默认可观察系统模块的确切列表?我知道有一个 --list-modules
选项,但它列出了所有模块,包括 java.se.ee
.
So, is my assumption correct: if no --add-modules and --limit-modules are specified, the set of observable system modules consists of all system modules except java.se.ee?
简而言之,没错。
在 Java 9 中启用的默认模块集被称为 根模块 。
根据 JEP 261,默认的 根模块集 定义为:
The java.se module is a root, if it exists. If it does not exist then every java.* module on the upgrade module path or among the system modules that exports at least one package, without qualification, is a root.
Every non-java.* module on the upgrade module path or among the system modules that exports at least one package, without qualification, is also a root.
这是 java.se
模块中包含的内容的精美图形:
(来源:Java 9 javadoc)
与java.se
聚合模块一样,java.se.ee
模块本身不提供任何类,它是一个包含以下模块的聚合模块:
java.se
java.activation
java.annotations.common
java.corba
java.transaction
java.xml.bind
java.xml.ws
Is there a reliable way to know the exact list of default observable system modules? I know there is a --list-modules option, but it lists all modules including java.se.ee.
您的术语在这里略有偏差。在 Java 9 中,如果满足以下两个条件,则模块是 可观察的:
- 该模块是一个系统模块(即来自 JDK)或者它被添加到模块路径
- 模块未通过
--limit-modules
排除
这意味着 java.se.ee
默认是 可观察的 。
我想您反而想知道 哪些模块是 根模块 的默认设置?在这种情况下,请参阅上面的根模块定义。
当我通过 java -cp
(没有 --add-modules
或 --limit-modules
)运行 应用程序时,一些 Java 系统模块是可观察的,而其他的则不是.
例如,所有 java.se
模块都是可观察的。所有 java.se.ee
个模块都不可观察。我知道 javafx.*
模块是可观察的。 jdk.unsupported
和 jdk.shell
也是可见的。
所以,我的假设是否正确:如果没有指定 --add-modules
和 --limit-modules
,则可观察系统模块集包含除 java.se.ee
之外的所有系统模块?
是否有可靠的方法来了解默认可观察系统模块的确切列表?我知道有一个 --list-modules
选项,但它列出了所有模块,包括 java.se.ee
.
So, is my assumption correct: if no --add-modules and --limit-modules are specified, the set of observable system modules consists of all system modules except java.se.ee?
简而言之,没错。
在 Java 9 中启用的默认模块集被称为 根模块 。 根据 JEP 261,默认的 根模块集 定义为:
The java.se module is a root, if it exists. If it does not exist then every java.* module on the upgrade module path or among the system modules that exports at least one package, without qualification, is a root.
Every non-java.* module on the upgrade module path or among the system modules that exports at least one package, without qualification, is also a root.
这是 java.se
模块中包含的内容的精美图形:
与java.se
聚合模块一样,java.se.ee
模块本身不提供任何类,它是一个包含以下模块的聚合模块:
java.se
java.activation
java.annotations.common
java.corba
java.transaction
java.xml.bind
java.xml.ws
Is there a reliable way to know the exact list of default observable system modules? I know there is a --list-modules option, but it lists all modules including java.se.ee.
您的术语在这里略有偏差。在 Java 9 中,如果满足以下两个条件,则模块是 可观察的:
- 该模块是一个系统模块(即来自 JDK)或者它被添加到模块路径
- 模块未通过
--limit-modules
排除
这意味着 java.se.ee
默认是 可观察的 。
我想您反而想知道 哪些模块是 根模块 的默认设置?在这种情况下,请参阅上面的根模块定义。