2017-03-16 15 views
0

프로젝트가 완료되었으므로 IntelliJ에 JAR을 만들었습니다. 첫 번째 단계 (javaFX)가 표시되지만 새 단계를 만들려면 단추를 클릭 할 때 아무 것도 발생하지 않습니다 (예상되는 이전 단계가 닫힐 것으로 예상). 런타임이 새로운 스테이지를 만들지 않는 이유는 무엇입니까?새 장면을 만들기 전에 JAR이 닫힙니다.

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(); 
     } 
+0

코드에 의해 검사되지 않은 예외가 발생했는지 확인하려면 명령 줄 (java -jar myJarFile.jar)에서 jar 파일을 실행 해보십시오. –

답변

1

기본적으로 마지막 창을 닫으면 응용 프로그램이 종료됩니다. 코드에서 새 창을 열기 전에 기존 창을 닫으므로 어떤 일이 일어나고 있는지는 그 사이에 플랫폼이 종료되고있는 것입니다.

Application 클래스의 init() 또는 start(...) 방법에 선

Platform.setImplicitExit(false); 

추가 (...이 동작이 조금 깨지기 쉬운 참고).

+0

아무 것도 바뀌지 않는 것 같습니다. 버튼을 누르면 여전히 닫힙니다. 또한 getWindow.hide()를 주석에 넣으려고 시도했습니다. JAR은 더 이상 닫히지 않지만 버튼을 클릭해도 효과가없고 새로운 단계가 없습니다. – m4t5k4

+0

@ m4t5k4 그래서'hide()'를 호출하고'showAndWait()'를 호출하는 사이에 예외가 발생합니다. 그것이 jar 파일에서 발생하지만 파일 시스템에서 실행하지 않는 경우 가장 가능성있는 원인은 유효하지 않은 자원 이름으로 자원을로드하는 것입니다. 처리되지 않은 예외를 볼 수 있도록 명령 행에서 jar 파일을 실행하십시오. –

+0

리틀 업데이트 : 절대 경로로 인해 JAR 파일에서 리소스를 찾을 수 없습니다. – m4t5k4