Zhe*_*lov 7 java java-platform-module-system java-9 module-path
当我通过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.
所以,我的假设是正确的:如果没有指定--add-modules和--limit-modules,那么可观察的系统模块集包含除java.se.ee之外的所有系统模块?
简而言之,是的,这是正确的.
Java 9中启用的默认模块集称为根模块.根据JEP 261,默认的根模块集定义为:
java.se模块是root用户(如果存在).如果它不存在则升级模块路径上或导出至少一个包的系统模块中的每个java.*模块都是root用户.
升级模块路径上或导出至少一个包的系统模块中的每个非java.*模块都没有限定条件,也是根.
这是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
Run Code Online (Sandbox Code Playgroud)
有没有可靠的方法来了解默认的可观察系统模块的确切列表?我知道有一个--list-modules选项,但它列出了所有模块,包括java.se.ee.
你的术语稍微偏离了这里.在Java 9中,如果满足以下两个条件,则可以观察到模块:
--limit-modules这意味着默认情况下java.se.ee是可观察的.
我想你不知道哪些模块是默认的根模块集?在这种情况下,请参阅上面的根模块定义.
| 归档时间: |
|
| 查看次数: |
1619 次 |
| 最近记录: |