gpt4 book ai didi

java - Java 9 中 java.se 模块的意义是什么?

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:54:48 24 4
gpt4 key购买 nike

为什么 java 9 模块系统有 java.se 模块,它对其他模块有传递依赖。这与在 Java 9 之前的世界中依赖整个 rt.jar 不一样吗?

module java.se {
requires transitive java.desktop;
requires transitive java.security.jgss;
requires transitive java.security.sasl;
requires transitive java.management;
requires transitive java.logging;
requires transitive java.datatransfer;
requires transitive java.sql.rowset;
requires transitive java.compiler;
requires transitive java.sql;
requires transitive java.naming;
requires transitive java.prefs;
requires transitive java.rmi;
requires transitive java.xml.crypto;
requires transitive java.management.rmi;
requires transitive java.xml;
requires transitive java.scripting;
requires transitive java.instrument;
}

最佳答案

据我所知,主要原因是与非模块化 Java EE 代码的兼容性。当编译或启动没有模块声明或描述符(定义其依赖项)的代码时,就会出现允许“查看”JDK 中的哪些模块的问题。

如果这些都是 JDK 中的模块,那么 Java EE 模块将“掩盖”放在类路径中的任何 Java EE 实现。这是模块和类路径(在未命名模块中结束)之间交互的一个特点:如果一个包同时存在于常规模块和未命名模块中,则后者实际上是不可见的。

为了弥补这一事实,并非所有模块对于类路径上的代码都是可见的。相反,模块解析(解析应用程序的依赖项)将从根模块 java.se 开始,从而忽略 Java EE 模块。

有关更详细的解释,请查看 this mail from Alan Bateman ,其中他解释了相应的 JEP 261 的变化。 .

关于java - Java 9 中 java.se 模块的意义是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44178366/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com