解决 Java 9 模块系统中的可选依赖项

Resolve optional dependencies in Java 9 Module System

Java 9 模块系统通过 requires static my.module 支持可选依赖项。该依赖仅在编译时使用,即使在模块路径中,也不会在 运行 时解析。那么,如何解决可选依赖项?

  1. 解决方法:添加标志--add-modules my.module问题:该依赖是添加到根依赖还是作为根添加?
  2. 是否可以直接 requires 来避免使用 add-modules 标志?

A solution: Add flag --add-modules my.module. Question: is the dependency added to the root dependency or is it added as root?

使用标志 --add-modules 添加的模块被添加到默认的根模块集和模块图中,并在运行时解析以执行,因为在编译时对模块的依赖被定义为可选.

Is it possible to have a direct requires to avoid using add-modules flag?

是的,对于此类依赖项,您也可以直接 requires 并确保将模块非可选地添加到模块图中,但当您考虑可选与非可选时,这是一个设计问题项目的可选依赖项。

requires static 基本上提供了一种方法来指定模块依赖性,该依赖性在编译时是强制性的,但在运行时是可选的,用于与并非绝对必要但在运行时可以利用的库一起使用。