我有两个JavaFX项目。
所以Sub Project和Main Project都有自己的fxml文件和控制器。
当我使用NetBeans编译主项目时,它完全正常。 但是,一旦我将主项目部署到其他计算机,它会给我一个错误消息"系统找不到指定的文件"
我认为问题是当我弹出时,我使用子项目的fxml位置的绝对路径 子窗口。我一直试图从外部库中获取Jar文件中的fxml路径, 但我找不到任何解决方案。有人可以帮帮我吗?
这是我的代码在中打开一个新的子项目窗口 主项目的控制器
@FXML
private void handleButtonAction() throws IOException() {
FXMLLoader loader = new FXMLLoader(new File("D:/SubProjAddress/SubProject.fxml").toURI().toURL());
Parent root = (Parent)loader.load();
Scene scene = new Scene(root);
Stage stage = new Stage();
stage.setScene(scene);
stage.show();
}
我使用的是Java 8,netbeans。 提前谢谢
答案 0 :(得分:0)
我找到了问题的解决方案,因此我将其发布在此处以供将来参考。
如果您有包含SubProject的MainProject,并且您想要将SubProject的fxml加载到MainProject,则需要从SubProject的.jar文件加载SubProject的fxml。 上面的代码似乎是从你的src文件加载SubProject的fxml,而不是.jar文件,这导致了问题。
要从jar文件加载fxml文件,只需使用Class.getResource()而不是上面的代码。
例如,
FXMLLoader loader = new FXMLLoader(new File("D:/SubProjAddress/SubProject.fxml").toURI().toURL());
Parent root = (Parent)loader.load();
变为
Parent root = FXMLLoader.load(getClass().getResource("/subpackage/SubProject.fxml"));
使用这个,我可以毫无问题地部署包含多个项目的应用程序。