背景:我创建了一个 JavaFX 应用程序,使用 JFXPanel 嵌入到 Swing 框架中。我一直在使用 Eclipse 作为 IDE。“主应用程序”是另一个类,它仅用于创建一个类的实例,该实例扩展JFXPanel
为在实例化时加载我的 .fxml 文件。当从 Eclipse 执行主类时,一切都很好,我的 .fxml 文件中指定的 fx:controller 调用了它的initialize()
方法(我可以从它在加载时对 UI 所做的更改中看出)并且没有问题。
但是,当我将所有内容打包到 JAR 中并尝试将我的 JFXPanel 扩展类添加到 SwingJFrame
实例时,它会设法加载 .fxml 文件,只是读取图像、样式表等,其余代码的功能是预期但是永远不会调用fx:controller
'initialize()
方法。我从 jar 内部或外部的其他类访问该类没有问题,我什至尝试设置一个 ControllerFactory 它将返回一个 Controller 的实例,以及尝试设置FXMLLoader
类加载器和使用两者的各种组合调用的静态和非静态方法load()
. 结果总是一样的:从 IDE 启动时它会起作用,但从我打包的 jar 启动时不起作用。我知道 jar 没有丢失任何文件,因为就像我说的那样,从 Java 代码中找到类没有问题,并且捆绑的 fxml/css 文件似乎加载正常,减去控制器问题。
有人曾经遇到过这种情况,或者知道FXMLLoader
无法设置控制器会发生什么吗?这可能是某种错误吗?