如何通过Java代码获取当前JVM实例中所有模块的列表?可能吗?如果是,那怎么办?
答案 0 :(得分:11)
ModuleLayer.boot().modules().stream()
.map(Module::getName)
.forEach(System.out::println);
答案 1 :(得分:4)
使用模块的jar或目录作为应用程序的输入,您可以使用ModuleFinder
开始并进一步使用 findAll
来找到此查找程序可以找到的所有模块引用的集合。
Path dir1, dir2, dir3;
ModuleFinder finder = ModuleFinder.of(dir1, dir2, dir3);
Set<ModuleReference> moduleReferences = finder.findAll();
使用命令行选项可以轻松地将模块列为:
java -p <jarfile> --list-modules
如果您不想故意使用tweaking things和 ModuleLayer
Configuration
进入java.lang.module
,那就足够了>正如@Alan's answer所指出的那样。