从Start方法调用System.Exit时JavaFX8中的奇怪异常

时间:2014-05-20 18:08:47

标签: java exception stream javafx system

如果我有一个带有这个start方法的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 个答案:

答案 0 :(得分:1)

要退出JavaFX应用程序,您应该致电Platform.exit(),而不是System.exit()

我不知道您的具体FileNotFoundException例外情况。但是,我认为最好干净地关闭JavaFX平台,以便Application lifecycle完成。我认为,如果你不干净地关闭平台,你会发现不可预测的行为。