如何在Java 9中以编程方式获取所有模块的列表?

时间:2017-09-17 17:32:39

标签: java java-9 java-module

如何通过Java代码获取当前JVM实例中所有模块的列表?可能吗?如果是,那怎么办?

2 个答案:

答案 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所指出的那样。