У меня была такая же проблема в моем приложении JavaFX. Еще более странно: в моей среде разработки Windows все отлично работало с загрузчиком fxml. Но когда я выполнил тот же самый код на моей машине Debian, у меня были аналогичные ошибки с «location not set».
Здесь я прочитал все ответы, но ни один из них, похоже, действительно «не разрешил» проблему. Мое решение было легким, и я надеюсь, что это поможет некоторым из вас:
Возможно, Java запутается методом getClass (). Если что-то работает в разных потоках или ваш класс реализует какие-либо интерфейсы, он может прийти к выводу, что метод getClass () возвращает другой класс, чем ваш. В этом случае ваш относительный путь к creatProduct.fxml будет неправильным, потому что ваши «находятся» не в том пути, который, по вашему мнению, вы ...
Итак, чтобы быть на стороне сохранения: будьте более конкретными и попробуйте использовать статическое поле класса в своем классе ( Обратите внимание на ваш классClassHere.class ).
@FXML
public void gotoCreateProduct(ActionEvent event) throws IOException {
Stage stage = new Stage();
stage.setTitle("Shop Management");
FXMLLoader myLoader = new FXMLLoader(YourClassHere.class.getResource("creatProduct.fxml"));
Pane myPane = (Pane) myLoader.load();
Scene scene = new Scene(myPane);
stage.setScene(scene);
prevStage.close();
setPrevStage(stage);
stage.show();
}
Поняв это, я ВСЕГДА сделаю это так. Надеюсь, что это поможет!