如何在运行时测试可选模块是否存在

问题描述 投票:1回答:1

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是否足以满足要求?

java java-module jigsaw
1个回答
0
投票

如果您知道该图层,则可以忽略StackWalker

如果您希望它存在于引导层中,则可以编写:

ModuleLayer.boot().findModule(moduleName).isPresent();
© www.soinside.com 2019 - 2024. All rights reserved.