Javafx JAR在创建新场景之前关闭

Javafx JAR在创建新场景之前关闭,javafx,jar,runtime,tetris,Javafx,Jar,Runtime,Tetris,我的项目完成了,所以我在IntelliJ中创建了一个JAR。第一个阶段(javaFX)正在显示,但是当我点击按钮创建一个新阶段时,什么都没有发生(旧阶段会关闭,这是预期的)。为什么运行时不创建新阶段 view.getStartButton().setOnAction(new EventHandler<ActionEvent>() { @Override public void handle(ActionEvent event) {

我的项目完成了,所以我在IntelliJ中创建了一个JAR。第一个阶段(javaFX)正在显示,但是当我点击按钮创建一个新阶段时,什么都没有发生(旧阶段会关闭,这是预期的)。为什么运行时不创建新阶段

view.getStartButton().setOnAction(new EventHandler<ActionEvent>() {
        @Override
        public void handle(ActionEvent event) {
            view.getScene().getWindow().hide();
            GameView view = new GameView();
            TetrisSpelEigenschappen model = new TetrisSpelEigenschappen();
            TetrisSpel spel = new TetrisSpel(model);
            TetrisBlokken blokmodel = new TetrisBlokken(spel,model);
            GamePresenter gamePresenter = new GamePresenter(view, model, spel, blokmodel);
            Stage gameStage = new Stage();
            Scene gameScene = new Scene(view);
            gameStage.setScene(gameScene);
            gameStage.setTitle("Game");
            gameStage.centerOnScreen();
            gamePresenter.addWindowEventHandlers();
            gameStage.showAndWait();
        }
view.getStartButton().setOnAction(新的EventHandler()){
@凌驾
公共无效句柄(ActionEvent事件){
view.getScene().getWindow().hide();
GameView视图=新建GameView();
TetrisSpelEigenschappen模型=新TetrisSpelEigenschappen();
TetrisSpel spel=新的TetrisSpel(型号);
TetrisBlokken blokmodel=新的TetrisBlokken(spel,模型);
GamePresenter GamePresenter=新的GamePresenter(视图、模型、spel、blokmodel);
Stage gameStage=新阶段();
场景游戏场景=新场景(视图);
gameStage.setScene(游戏场景);
gameStage.setTitle(“游戏”);
gameStage.centerOnScreen();
gamePresenter.addWindowEventHandlers();
gameStage.showAndWait();
}

默认情况下,应用程序将在最后一个窗口关闭时退出。由于在代码中,您在打开新窗口之前关闭了现有窗口,我怀疑发生的情况是平台在这段时间内退出。(注意,此行为有点脆弱…)

添加行

Platform.setImplicitExit(false);

你的
应用程序
类的
init()
start(…)
方法。

似乎没有改变任何东西。按下按钮后它仍然关闭。我还尝试放置getWindow.hide()注释中。JAR不再关闭,但单击按钮无效,没有新的阶段。@m4t5k4因此,您可能会在调用
hide()
和调用
showAndWait()
之间引发异常。如果这发生在JAR文件中,但不是在从文件系统运行时,则最有可能是(但不是唯一可能的)原因是您正在加载一个资源名无效的资源。请从命令行运行jar文件,以便查看任何未处理的异常。小更新:由于绝对路径,jar文件找不到资源。@m4t5k4请参阅(不完全相同,但可能有帮助)要查看代码是否引发了任何未检查的异常,请尝试从命令行运行jar文件(
java-jar myJarFile.jar
)。