在运行时找不到 JavaFX 控制器 class

JavaFX controller class not found at Runtime

我正在编写一个使用插件的 JavaFX 应用程序。

我制作了一个加载 fxml 文件的插件,以在主应用程序中添加一些节点。

我加载了包含插件的所有 .class 的 .jar,但是当我 运行 插件时我有这个异常:

我不明白为什么因为.jar包含'MainController.class'...但是java 运行加载fxml文件时找不到它

当我 运行 插件作为 JavaFX 独立应用程序时,它工作正常。

我找到了解决方法:

不是在 FXML 文件中声明控制器 class,而是在加载文件之前以编程方式设置它,如下所示:

FXMLLoader loader = new FXMLLoader(getClass().getRessource("myFile.fxml");
loader.setController(new MyController());
loader.load();

希望对您有所帮助。