Я пытаюсь структурировать свой проект так, чтобы у меня не было всех источников для моего приложения в одной папке, но у меня возникла проблема с загрузкой файла fxml.
Структура моего проекта
-Project
-MainMenu
-MainMenu.fxml
-MainMenuController.java
-ChildMenu
-ChildMenu.fxml
-ChildMenuController.java
Я не могу загрузить мой ChildMenu.fxml файл из моего MainMenuController.java класса. Это то, что я пробовал
Parent root = FXMLLoader.load(getClass().getResource("../ChildMenu/ChildMenu.fxml"));
Parent root = FXMLLoader.load(getClass().getResource("./ChildMenu/ChildMenu.fxml"));
Parent root = FXMLLoader.load(getClass().getResource("/ChildMenu/ChildMenu.fxml"));
Parent root = FXMLLoader.load(getClass().getResource("/ChildMenu.fxml"));
Parent root = FXMLLoader.load(getClass().getResource("ChildMenu.fxml"));
Я также пытался выполнить поиск переполнения стека и Google, но не нашел решения этой проблемы.
Вот изображение того, с чем я работаю, я упростил свой вопрос выше, но, похоже, это не помогает.
NetBeans собирает проект во временный Jar-файл, поэтому использование полного пути должно работать, но в настоящее время его нет, если вы видите, что результат сборки / запуска полного пути к тому месту, где система говорит, что я
C:\Users\Tyler\Documents\NetBeansProjects\InventoryManagementUI
Но если вы на самом деле смотрите журналы сборки, то там написано, что он собрал / запустил jar в
C:\Users\Tyler\Documents\NetBeansProjects\InventoryManagementUI\dist\run96470141\InventoryManagementUI.jar
Я, должно быть, упускаю что-то очевидное.
Просто для полноты вот мой метод openWindow
public void openWindow(String window, Stage stage) {
try {
Parent root = FXMLLoader.load(getClass().getResource(window));
Scene scene = new Scene(root);
System.out.println("Show scene");
stage.initModality(Modality.APPLICATION_MODAL);
stage.setScene(scene);
stage.show();
} catch (Exception e) {
System.out.println("Failed to open new window: " + e.getMessage());
e.printStackTrace();
}
}