Странное исключение в JavaFX8, когда System.Exit вызывается из метода запуска

Если у меня есть приложение JavaFX с этим методом запуска, я получаю сообщение об ошибке, в котором говорится, что поток не может найти файл для записи или что он не существует, что любопытно, так как конструктор класса PrintStream говорит, что он будет создать файл. Но когда оператор System.exit удален, он работает нормально. Что происходит?

`@Override
public void start(Stage stage) throws Exception {
    Parent root = FXMLLoader.load(getClass().getResource("FXMLDocument.fxml"));

    Scene scene = new Scene(root);

    stage.setScene(scene);
    stage.show();
    System.setOut(new PrintStream(Paths.get("Resources",
            System.nanoTime() + ".dat").toFile()));
    System.out.println("Hello World!");
    System.exit(0);
}`

Исключение: Caused by: java.io.FileNotFoundException: Resources\Error Logs\86138494710083.dat (The system cannot find the path specified)

1 ответ

Решение

Чтобы выйти из приложения JavaFX, вы должны вызвать Platform.exit() не System.exit(),

Я не знаю, что вы конкретно FileNotFoundException исключение относится к. Однако я считаю, что лучше всего аккуратно завершить работу платформы JavaFX, чтобы завершить жизненный цикл приложения. Я думаю, что если вы не закрыли платформу без ошибок, вы можете ожидать непредсказуемого поведения.

Другие вопросы по тегам