Java9 + - Как загрузить модуль во время выполнения? - PullRequest
0 голосов
/ 18 сентября 2018

Я пытаюсь загрузить модуль во время выполнения, но он работает плохо.Я использовал пример, найденный в классе 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 не найден, требуется my.module

Однако, модуль "javafx.controls" записывается в дескрипторе модуля:

module my.module {

    requires javafx.controls;

    exports main.java.org.myproject;
}

Если я добавляю javafx.controls вручную в свой дескриптор основного модуля, он работает, но я хочу загрузить модуль без добавления вручную егонеобходимые модули!

Почему "my.module" не может загрузить javafx.controls?

У кого-нибудь есть решение, пожалуйста?

...