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

时间:2018-09-18 07:46:58

标签: 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("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?

有人有解决方案吗?

0 个答案:

没有答案