--add-modules 的 Java 9 反射等效项是什么?

What is the Java 9 reflection equivalent of --add-modules?

我需要一种方法来告诉新创建的 class 加载器(没有设置父级)关于我想要暴露给它的模块(例如 java.scripting)。

在命令行上传递 --add-modules 的反射等价物是什么?

没有编程方式可以实质性地编辑 JVM 在启动时创建的模块图(添加读取边是唯一的例外)。这是为了保持 运行 应用程序的安全和稳定而做出的慎重决定。 (例如,如果您在不包含 java.scripting 模块的运行时 运行,您的代码会发生什么情况?)

不过,您可以做的是创建一个新层,其中包含一个全新的模块图。启动 JVM 时,它将根据命令行标志和模块路径内容创建一个层。使用现有的 API,您可以在该层之上创建新层。要了解图层,请查看 The State of the Module System and the Javadoc for ModuleLayer.