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

问题描述 投票:0回答:2

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

java java-9 java-module
2个回答
19
投票
ModuleLayer.boot().modules().stream()
                .map(Module::getName)
                .forEach(System.out::println);

7
投票

使用 jar 或模块目录作为应用程序的输入,您可以使用

ModuleFinder
开始并进一步使用
findAll
来查找 所有模块的集合该查找器可以找到的参考文献。

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

这可以通过命令行选项轻松实现,将模块列出为:

java -p <jarfile> --list-modules

这应该足够了,如果您不想故意使用 ModuleLayer

Configuration
java.lang.module
 进行
调整事情
,正如 @ 所精确指出的那样,这应该足够了艾伦的回答.

© www.soinside.com 2019 - 2024. All rights reserved.