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

时间:2018-02-03 02:09:23

标签: java java-9 jigsaw

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

  1. 解决方案:添加标记--add-modules my.module问题:是添加到根依赖项的依赖项还是以root身份添加?
  2. 是否可以直接requires以避免使用add-modules标志?

1 个答案:

答案 0 :(得分:2)

  

解决方案:添加标志--add-modules my.module。问题:是   依赖项添加到根依赖项还是以root身份添加?

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

  

是否可以直接要求避免使用add-modules   标志?

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

requires static基本上提供了一种方法,用于指定在编译时是必需的模块依赖,但在运行时是可选的,用于非严格必要但在运行时存在时可以利用的库。