Чтобы расширить мой комментарий ...
Ответ
В вашем коде вы звоните getResource("/addHolidayDialog.fxml")
. Имя файла вашего ресурса, однако, AddHolidayDialog.fxml
. Просто измените «a» в вашем коде на «A», и ваш код должен работать.
Объяснение
Запуск из Intellij
Когда вы запускаете приложение из Intellij, оно использует выходные файлы в каталоге out/production/classes
. Другими словами, классы не находятся в файле JAR. Когда вы звоните getClass().getResource("/addHolidayDialog.fxml")
, вы получите URL
как:
file://C:/.../out/production/classes/addHolidayDialog.fxml
, который работает в Windows, несмотря на тот факт, что файл на самом деле с именем AddHolidayDialog.fxml
, потому что Windows имеет нечувствительную к регистру файловую систему.
Бег из JAR
Затем вы экспортируете свой проект в JAR и запускаете его оттуда. Позвонив по тому же коду getResource
, вы получите URL
(если код работает), например:
jar:file://C:/.../your-application.jar!/addHolidayDialog.fxml
То, что на самом деле ваш код возвращает с getResource
, это null
. Согласно файлу JAR, ресурс addHoldiayDialog.fxml
не существует. Однако он с радостью сообщит вам, что AddHolidayDialog.fxml
существует . Причиной этого является то, что файл JAR имеет чувствительную к регистру «файловую систему».