Использование пользовательского элемента управления из внешней библиотеки JAR для загрузки в представлении FXML - PullRequest
0 голосов
/ 08 апреля 2019

У меня сложная архитектура приложения с общей библиотекой, установленной в качестве внешнего jar-файла и используемой как моим основным приложением (также jar-файлом), так и несколькими пакетными модулями (также jar-файлы ...), загружаемыми по требованию основного приложения. Мне не удается заставить контроллер FXML из модуля использовать пользовательский элемент управления из общей библиотеки.

Мой контекст - все JavaFX 8. Все работает просто отлично, запуская главное приложение из Eclipse IDE. Но когда я запускаю основное приложение своих пакетов из командной строки, я получаю некоторые: javafx.fxml.LoadException Вызывается: java.lang.IllegalArgumentException: Не удается установить поле net.demo.control.MyControl net.demo.module.modtest.gui.FormView.testcontrol в net.demo.control.MyControl

Я пытался заставить загрузчик классов FXMLLoader на какой-то пользовательский URLClassLoader на основе пути для включения модуля, но я не настолько убежден, что это может помочь решить мою проблему.

Вот мой пример демонстрационного представления FXML, загруженного загрузчиком FXML, который завершается ошибкой:

<?import javafx.scene.layout.Pane?>
<?import javafx.scene.layout.VBox?>
<?import net.demo.control.MyControl?>

<fx:root fx:id="root" type="Pane" xmlns="http://javafx.com/javafx/8.0.65" xmlns:fx="http://javafx.com/fxml/1">
    <children>
        <VBox>
            <MyControl fx:id="myControl" />
        </VBox>
    </children>
</fx:root>

Я ожидаю, что FXMLLoader сможет импортировать класс для элемента управления из внешней библиотеки jar. Внешняя библиотека jar распознается из модулей, созданных в основном приложении, так как мне удалось загрузить файлы ресурсов из общей библиотеки в модули.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...