在 Java9 中列出所有必需的模块?
List all required modules in Java9?
如何在 Java9 中列出所有必需的模块?
对于系统模块,这有效:
ModuleFinder.ofSystem()
.findAll()
.stream()
...
但是,没有看到 atm 如何获取我当前代码 需要 的模块列表。
这道题是关于以编程方式查询所有模块的。这不是解决模块化问题。
您可能希望使用 Javadoc 中为 ModuleLayer
to get a ModuleLayer
of your module named let's say one
to find out the descriptor and further the set of 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);
如何在 Java9 中列出所有必需的模块?
对于系统模块,这有效:
ModuleFinder.ofSystem()
.findAll()
.stream()
...
但是,没有看到 atm 如何获取我当前代码 需要 的模块列表。
这道题是关于以编程方式查询所有模块的。这不是解决模块化问题。
您可能希望使用 Javadoc 中为 ModuleLayer
to get a ModuleLayer
of your module named let's say one
to find out the descriptor and further the set of 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);