当我使用GUI(例如简单的JFrame)运行Java程序然后结束X会话(注销)时,我的Java程序终止。没有使用GUI的Java程序继续运行。
这没有任何问题,但我想知道 程序是如何终止的。我没有收到有关未捕获的异常或其他问题的消息。退出代码为1.如果prog由信号终止,退出代码将通过128 +信号(afaik)。
有人可以解释这个问题。我可以以某种方式阻止程序终止或控制该案例的退出代码吗?
[编辑]
我知道defaultCloseOperation。我正在使用EXIT_ON_CLOSE。但这会导致调用System.exit(0)。 我还添加了一个WindowListener来监视程序结束时调用哪些函数。当我通过单击窗口X完成程序时,将调用函数windowClosing()。当我注销并完成X-session以便我的程序终止时,不会调用WindowListener函数。我的程序只退出退出代码1。
答案 0 :(得分:0)
当我使用GUI(例如简单的JFrame)运行Java程序时
我不知道X-session的工作原理,但是在使用JFrame时你需要注意框架
setDefaultCloseOperation(...);
方法。使用EXIT_ON_CLOSE
时,JVM将立即退出。
当DISPOSE_ON_CLOSE
时,如果JVM是最后一帧打开并且没有其他线程在运行以阻止JVM关闭,则将退出JVM。