У меня есть три модуля с именами core, common и item, и каждый модуль является дочерним модулем проекта Maven. Я использую ServiceLoader для реализации сервисного подхода и Java 11 с fontawesomefx 11 (последний).
Я не работал с модульной системой Java, поэтому понятия не имею, правильно ли я делаю с файлами информации модуля. Тем не менее, модуль core и item требует наличия модуля fontawesomefx, и это приводит к следующей ошибке:
Error occurred during initialization of boot layer
java.lang.LayerInstantiationException: Package license in both module de.jensd.fx.fontawesomefx.materialicons and module de.jensd.fx.fontawesomefx.materialdesignicons
module-info для всех подмодулей:
module common {
requires javafx.graphics;
requires javafx.controls;
requires de.jensd.fx.fontawesomefx.commons;
exports common.abstractions;
exports common.services;
exports common.sidebar;
opens common.services;
}
module core {
requires common;
requires javafx.controls;
requires javafx.fxml;
requires de.jensd.fx.fontawesomefx.materialdesignicons;
uses common.services.ISidebarPlugin;
exports core.ui to javafx.graphics;
exports core.ui.mainpage to javafx.fxml;
exports core.ui.sidebar to javafx.fxml;
opens core.ui.mainpage to javafx.fxml;
opens core.ui.sidebar to javafx.fxml;
}
module item {
requires common;
requires de.jensd.fx.fontawesomefx.materialicons;
provides common.services.ISidebarPlugin with item.sidebar.ItemSidebarPlugin;
}
Если я удаляю provides common.services.ISidebarPlugin with item.sidebar.ItemSidebarPlugin;
, приложение работает, но без модуля item, поскольку реализация не будет загружена ServiceLoader.