使用来自外部jar库的自定义控件将其加载到FXML视图中

时间:2019-04-08 14:37:00

标签: java javafx jar

我有一个复杂的应用程序体系结构,其中有一个设置为外部jar的公共库,供我的主应用程序(也是jar)和主要应用程序按需加载的几个软件包模块(也是jars)使用。 我无法让模块中的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库是从主应用程序中修改的模块中识别出来的,因为我可以设法将资源文件从通用库加载到模块中。

0 个答案:

没有答案