Я использую IntelliJ IDEA и написал очень базовую программу JavaFX (или просто начал писать программу). Когда я запускаю программу для проверки моего графического интерфейса, нажмите кнопку X, чтобы закрыть окно java. Я получаю следующее. Если я код кнопки сказать Platform.exit(), она также дает мне этот код:Базовое закрытие приложения Java с неправильным кодом выхода
процесс завершится с кодом выхода -1073741819 (0xC0000005)
Я кодированной кнопку для вызова System.exit (0), и когда я нажимаю на него, он печатает на консоли, что нажата кнопка выхода, и говорит:
Java SE Binary перестает работать.
Я запустил новый проект JavaFX в Intellij IDEA и пропустил прогон, чтобы проверить начатое исходное тестовое окно, а также выходит с кодом выхода, указанным выше.
У меня установлена последняя JDK (jdk1.8.0_121 64 бит), последняя версия сценария от GluonHQ, и я запускаю Windows 10 Pro x64.
Не уверен, что еще нужно предоставить информацию мудрый, пожалуйста, дайте мне знать, если вам нужна дополнительная информация.
Код кнопки выхода (fxid совпадает с файлом контроллера/.xml). Я планирую сделать лямбду в будущем, все еще обнимая вокруг себя, но это должно работать так, как есть, нет?
exitButton.setOnAction(new EventHandler<ActionEvent>()
{
@Override
public void handle(ActionEvent event)
{
System.out.println("You clicked exit!");
Platform.exit();
}
});
EDIT: Это код, который сам по себе является лишь пример проекта создает 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);
}
}
Не могли бы вы разместить более релевантный код? Мне интересно, нужно ли закрывать какой-то объект потока - что-то в этом роде. –
Что вы хотите достичь, вызывая 'Platform.exit();'. Есть ли какая-либо пользовательская реализация в методе остановки 'Application'? Если вы хотите полностью отключить JVM, вызовите 'System.exit (0); вместо – AntJavaDev
@AdrianM. Я поставил больше кода в своем оригинальном посте. Я попробовал ... Platform.exit(); System.exit (0); Добавление System.exit (0) вызывает сбой двоичного файла SE. –