我有一个复杂的应用程序体系结构,其中有一个设置为外部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库是从主应用程序中修改的模块中识别出来的,因为我可以设法将资源文件从通用库加载到模块中。