有什么区别requires and 需要静态模块声明中的模块语句?
例如:
module bar {
requires java.compiler;
requires static java.base;
}
A requires
子句表示在编译和运行时需要所需的模块。因此,当模块系统在执行期间遇到这样的子句时模块分辨率 http://openjdk.java.net/projects/jigsaw/spec/sotms/#resolution(处理模块描述符和解决依赖关系的阶段)它搜索可观察模块的范围(JDK 中和模块路径上的模块),如果找不到模块,则抛出错误。
A requires static
子句表示运行时可选的依赖项 https://blog.codefx.org/java/module-system-optional-dependencies/。这意味着在编译时模块系统的行为与上述完全相同。
另一方面,在运行时,它大多忽略requires static
条款。如果它遇到一个,它没有解决它。这意味着,如果一个可观察模块仅被引用requires static
,它没有进入模块图中!一开始这可能有点令人惊讶。另一方面,如果该模块以其他方式进入图中(某些其他模块需要,手动添加--add-modules https://blog.codefx.org/java/five-command-line-options-to-hack-the-java-9-module-system/#Extending-The-Module-Graph-With--add-modules, 被吸引到服务绑定 http://openjdk.java.net/projects/jigsaw/spec/sotms/#services),所有对其具有可选依赖关系的模块都可以read http://openjdk.java.net/projects/jigsaw/spec/sotms/#readability it.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)