我使用IntelliJ IDEA并编写了一个非常基本的JavaFX程序(或者刚刚开始编写该程序)。当我运行程序来检查我的GUI,然后点击X按钮关闭java窗口我得到以下内容。如果我编写一个按钮来说明Platform.exit(),它也会给我这个代码:
处理完成,退出代码为-1073741819(0xC0000005)
我编写了一个按钮来调用System.exit(0),当我点击它时,它会打印到控制台,单击退出按钮然后说:
Java SE二进制文件已停止工作。
我在Intellij IDEA中启动了一个新的JavaFX项目并点击运行以检查它运行的基本样本窗口,并且还退出上面列出的退出代码。
我安装了最新的JDK(jdk1.8.0_121 64位),来自GluonHQ的最新版本的scenebuilder,并且运行的是Windows 10 Pro x64。
不确定还提供哪些信息,如果您需要更多信息,请与我们联系。
退出按钮的代码(fxid在controller / .xml文件中是相同的)。我计划将来做一个lambda,仍然围绕着那些,但这应该按原样运行,不是吗?
exitButton.setOnAction(new EventHandler<ActionEvent>()
{
@Override
public void handle(ActionEvent event)
{
System.out.println("You clicked exit!");
Platform.exit();
}
});
编辑:这是代码,它本身就是IntelliJ IDEA在启动新的JavaFX项目时创建的示例项目。没有任何调整我仍然得到退出代码而不是预期的0,所以发生的事情独立于我写的代码。
在sample.fxml
上<?import javafx.geometry.Insets?>
<?import javafx.scene.layout.GridPane?>
<?import javafx.scene.control.Button?>
<?import javafx.scene.control.Label?>
<GridPane fx:controller="sample.Controller"
xmlns:fx="http://javafx.com/fxml" alignment="center" hgap="10" vgap="10">
</GridPane>
在Controller.java上
package sample;
public class Controller {
}
Main.java上的
package sample;
import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.stage.Stage;
public class Main extends Application {
@Override
public void start(Stage primaryStage) throws Exception{
Parent root = FXMLLoader.load(getClass().getResource("sample.fxml"));
primaryStage.setTitle("Hello World");
primaryStage.setScene(new Scene(root, 300, 275));
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
答案 0 :(得分:2)
根据various sources,似乎这是一系列NVidia驱动程序的问题。我收到了返回代码0xC0000005
,将我的驱动程序更新为378。66(2017年2月21日发布,截至2017年2月21日发布)并停止了此问题。
答案 1 :(得分:0)
在终止整个程序之前尝试正确关闭GUI窗口:
exitButton.setOnAction(new EventHandler<ActionEvent>()
{
@Override
public void handle(ActionEvent event)
{
event.getSource().getScene().getWindow().close();
System.out.println("You clicked exit!");
System.exit(0);
}
});