Java9+;-如何在运行时加载模块?
我试图在运行时加载一个模块,但效果不好。 我使用了ModuleLayer类中的示例: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("
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;
}