当我进行一些特殊的 GUI 交互时,我遇到了这个问题。
这是我的情况:我使用一个对话框。我不打电话
System.exit() 但稍后返回并离开应用程序。
通常,当 JVM 发现不再存在时,它就会存在。
非守护线程正在运行。但使用这个对话框后,
它不起作用。
我 100% 确信在对话框中调用了 dispose() 有问题以及应用程序的主框架。 我在 IDE 中和运行时都得到了这个 命令行。我可以通过按一下按钮来杀死它 IDE,或从命令行使用 Ctrl-C。
但是如果 JVM 正确终止当然会更好 在交付应用程序之前自行处理。
任何线索,这是一个已知问题吗?我使用的是 JDK 1.7,但是 问题已在 JDK 1.6 中出现。
最诚挚的问候
附注:刚刚阅读: http://download.oracle.com/javase/1.4.2/docs/api/java/awt/doc-files/AWTThreadIssues.html 过去也曾出现过类似的问题。也许这是一个新问题。 过去的问题是: 其他包可以根据内部需要创建可显示的组件,并且永远不会使它们不可显示。请参阅4515058 , 4671025 ,和4465537 。 我将尝试沿着弹出菜单的显式 setVisible(false) 进行一些尝试。
最佳答案
您确定弹出窗口已被销毁而不仅仅是隐藏吗?我相信默认操作是隐藏,将默认关闭操作设置为 JFRAME.EXIT_ON_CLOSE 可能会解决这个问题。
诊断问题的另一种方法可能是使用分析器,例如 Netbeans 附带的分析器。在应用程序终止之前使用实时 View 和调试点,您可以检查实时对象。
关于java - 什么可能导致Java返回后继续运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7570391/