Pav*_*l_K 12 java java-9 java-module
如何通过Java代码获取当前JVM实例中所有模块的列表?可能吗?如果是,那怎么样?
Ala*_*man 13
ModuleLayer.boot().modules().stream()
.map(Module::getName)
.forEach(System.out::println);
Run Code Online (Sandbox Code Playgroud)
使用 jar 或模块目录作为应用程序的输入,您可以使用 aModuleFinder开始,并进一步使用findAll来查找该查找器可以找到的所有模块引用的集合。
Path dir1, dir2, dir3;
ModuleFinder finder = ModuleFinder.of(dir1, dir2, dir3);
Set<ModuleReference> moduleReferences = finder.findAll();
Run Code Online (Sandbox Code Playgroud)
使用命令行选项可以轻松实现这一点,将模块列出为:
java -p <jarfile> --list-modules
Run Code Online (Sandbox Code Playgroud)
不过,如果您不想故意使用 和 进行调整,正如@Alan的回答所指出的ModuleLayer那样,这应该足够了。Configurationjava.lang.module