Ваш класс LoginPresenter
находится (в соответствии с трассировкой стека) в пакете fr.orleans.univ.projet.view
.
Использование LoginPresenter.class.getResourceAsStream("login.fxml")
будет искать ресурс login.fxml
в том же пакете, что и LoginPresenter
находится в. Согласно вашему комментарию, вы поместили login.fxml
в исходную папку src/main/java/resources
(я предполагаю, что "ресурсы" - опечатка), которая (со стандартной конфигурацией в большинстве сред IDE или инструментов сборки) поместит ее в пакет по умолчанию в сборке.
Это можно исправить либо
, указав абсолютный путь к файлу F XML. Так как у вас это есть в пакете по умолчанию, это означает использование
LoginPresenter.class.getResourceAsStream("/login.fxml")
(обратите внимание на ведущий /
)
- или размещение
login.fxml
в том же пакете, который вы бы сделали, поместив его в исходную папку src/main/java/resources/fr/orleans/univ/projet/view
.
В общем, я думаю, что последнее решение лучше.
Также необходимо убедиться, что файл F XML развернут во время сборки; если вы используете инструмент сборки, такой как Maven или Gradle, это должно происходить по умолчанию; если вы используете ванильную сборку из вашей IDE, вам может потребоваться настроить ее, чтобы это произошло.
Если вам требуется дальнейшее устранение неполадок, проверьте макет папки buid ( не исходная папка). В зависимости от вашего инструмента сборки или IDE, это может быть build
, bin
, target
, target/classes
, et c. Загляните в папку сборки и проверьте соотношение между LoginPresenter.class
и login.fxml
.
Одна немного не в топе c точка; Я настоятельно рекомендую использовать ресурсный URL для загрузки F XML, а не потока; т.е. использовать
LoginPresenter.class.getResource(...)
вместо
LoginPresenter.class.getResourceAsStream(...)
Причина в том, что потоковая версия метода загрузки не может установить свойство FXMLLoader
'location
(потому что нет место указано); следовательно, например, разрешение местоположения не будет работать в файле F XML.