2

如何在 Java9 中列出所有必需的模块?

对于系统模块,这有效:

ModuleFinder.ofSystem()
    .findAll()
    .stream()
    ...

但是,没有看到 atm 如何获取我当前代码所需的模块列表。

这个问题是关于以编程方式查询所有模块。这不是解决模块化问题。

4

1 回答 1

2

您可能希望使用 Javadoc 中提供的示例ModuleLayer来获取ModuleLayer名为 let 的模块one,以找出描述符并进一步在其模块依赖项中设置 requires对象。

ModuleFinder finder = ModuleFinder.of(Paths.get("/path/to/module/in/out/production/")); // this is generally a path where I build my modules to

ModuleLayer parent = ModuleLayer.boot();

Configuration cf = parent.configuration()
                         .resolve(finder, ModuleFinder.of(), Set.of("one")); // name of module in module-info

ClassLoader scl = ClassLoader.getSystemClassLoader();
ModuleLayer layer = parent.defineModulesWithManyLoaders(cf, scl);

layer.modules()
     .stream()
     .map(Module::getDescriptor) // get the descriptor of module
     .map(ModuleDescriptor::requires) // set of requires in the module dependencies
     .forEach(System.out::println);
于 2017-12-05T01:37:04.837 回答