Java平台模块系统(JPMS)允许模块使用requires static
文件中的module-info.java
声明可选的依赖项:
module my.module {
requires static some.optional.module;
}
但是,如何在运行时检查代码是否存在该模块?
[建议的Project Jigsaw: Optional Modules页:
public boolean isModulePresent(String mn);
但是,由于最近的Java版本中没有这样的方法,因此似乎将其删除了。我也找不到当前Java版本中提到的@RequireOptionalModule
注释。
[This example on blog@CodeFX建议在StackWalker
上使用非常冗长的方法链(将在here中进行说明)。
是否有更简单的方法来执行此检查,或者如果某个类的存在指示存在模块,则简单的Class.forName
是否足以满足要求?
如果您知道该图层,则可以忽略StackWalker
。
如果您希望它存在于引导层中,则可以编写:
ModuleLayer.boot().findModule(moduleName).isPresent();