我正在尝试在运行时加载模块,但效果不佳。 我使用了在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");
问题来自我要加载的模块的要求。 我的IDE向我显示此错误:
找不到模块 javafx.controls ,由要求 我的模块
但是,模块“ javafx.controls”写在模块描述符中:
module my.module {
requires javafx.controls;
exports main.java.org.myproject;
}
如果我在主模块描述符中手动添加javafx.controls,它可以工作,但是我想加载一个模块而不手动添加其所需的模块!
为什么“ my.module”无法加载javafx.controls?
有人有解决方案吗?