Java9+;-如何在运行时加载模块?

Java9+;-如何在运行时加载模块?,java,java-9,java-module,Java,Java 9,Java Module,我试图在运行时加载一个模块,但效果不好。 我使用了ModuleLayer类中的示例: ModuleFinder finder = ModuleFinder.of(Paths.get("out/artifacts/my_module/")); ModuleLayer parent = ModuleLayer.boot(); Configuration cf = parent.configuration().resolve(finder, ModuleFinder.of(), Set.of("

我试图在运行时加载一个模块,但效果不好。 我使用了ModuleLayer类中的示例:

 ModuleFinder finder = ModuleFinder.of(Paths.get("out/artifacts/my_module/"));
 ModuleLayer parent = ModuleLayer.boot();
 Configuration cf = parent.configuration().resolve(finder, ModuleFinder.of(), Set.of("my.module"));
 ClassLoader scl = ClassLoader.getSystemClassLoader();
 ModuleLayer layer = parent.defineModulesWithOneLoader(cf, scl);
 Class<?> c = layer.findLoader("my.module").loadClass("main.java.org.myproject.MyClass");
如果我在我的主模块描述符中手动添加javafx.controls,它可以工作,但我想加载一个模块,而不手动添加所需的模块

为什么“my.module”无法加载javafx.controls


任何人都有解决方案吗?

为什么要在运行时加载它?寻找类似的东西吗?如果这是JDK 9或JDK 10,那么问题可能是因为javafx.controls不在启动层。如果使用
--添加模块ALL-SYSTEM
--添加模块javafx.controls
运行,则它将解析javafx.controls。使用JDK11,然后将JavaFX目录放在模块路径上,它应该可以正常工作。我的代码可以工作,但不在IDE中…christopher,这是一个插件系统。
module my.module {

    requires javafx.controls;

    exports main.java.org.myproject;
}