16

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

4

2 回答 2

15
ModuleLayer.boot().modules().stream()
                .map(Module::getName)
                .forEach(System.out::println);
于 2017-09-17T19:48:05.483 回答
4

使用 jar 或模块目录作为应用程序的输入,您可以使用 aModuleFinder开始并进一步使用findAll查找此查找器可以找到的所有模块引用的集合。

Path dir1, dir2, dir3;
ModuleFinder finder = ModuleFinder.of(dir1, dir2, dir3);
Set<ModuleReference> moduleReferences = finder.findAll();

这很容易通过命令行选项将模块列出为:

java -p <jarfile> --list-modules

但是,如果您不想像@Alan的回答所指出的那样故意使用 the和 the来调整事物,这应该就足够了。ModuleLayerConfigurationjava.lang.module

于 2017-09-17T18:02:24.657 回答