Когда я запускаю основной класс в проекте Maven, я получаю:
Исключение в методе запуска приложения
Из того, что я понял, этопотому что файл FXML не загружается.
Это иерархия файловой системы
src
└- main
├- java
| └- zenit
| └- ui
| └- TestUI.java
└- resources
└- zenit
└- ui
└- Main.fxml
В Eclipse (внутри src)
Чтение Руководство Apache Maven и Другие вопросы Statck , следующий код-snippet, кажется, является правильным способом создания FXMLLoader
и указания на файл Main.fxml
.
public class TestUI extends Application {
public void start(Stage stage) throws IOException {
FXMLLoader loader = new FXMLLoader(getClass().getResource("Main.fxml"));
.
. // set controller, load parent, set scene etc.
.
}
public static void main(String[] args) {
launch(args);
}
}
Но этот код вызовет ранее указанное исключение.
Когда япопытался определить, откуда в моем коде появился Exception
, я понял, что это форма FXMLLoader
.Поэтому я запустил разные sysouts (по одному за раз) в строке выше FXMLLoader loader = new FXMLLoader(..)
:
System.out.println(getClass().getResource("Main.fxml"));
System.out.println(getClass().getResource("main/resources/zenit/ui/Main.fxml"));
System.out.println(getClass().getResource("../../../resources/zenit/ui/Main.fxml"));
Для всех вывод консоли был: (очевидно, не ожидаемый вывод)
null
Итак, мой вопрос:
Почему .getResource("Main.fxml")
возвращает null
здесь?
Как правильно получить доступ к Main.fxml
файл в этом случае?
Моя система:
- Maven: Apache Maven 3.6.0
- Java SE: 11.0.2
- JavaFX: 11.0.2
- Затмение: 2018-12 (4.10.0)
- ОС: macOS Mojave - v10.14.3