java - 如何弄清楚为什么我的 Java 应用程序在退出后继续运行?
问题描述
我正在为 Windows 开发 Java 桌面应用程序,并且正在尝试实现 Windows 重新启动管理器。我成功接收到退出应用程序的 Windows 消息,当我手动发送它们时,它正常工作并且应用程序关闭。
当我作为卸载过程的一部分执行此操作时,我的应用程序中的关闭过程会运行,我什至可以看到它调用System.exit(0)
,但即使在那之后,还有一个过程不会停止。我的 Java 应用程序使用 launch4j 打包到一个可执行文件中,以防万一。
我知道System.exit(0)
被调用的方式是因为我正在将调试信息转储到一个文件中,并且我打印出System.exit(0)
即将被调用的内容,并且我可以看到应用程序在正确关闭时是成功还是失败。
使用 Process Explorer 我可以看到javaw.exe
子进程,当退出过程发生时,它消失了,但父进程仍然存在。在运行时,它看起来像这样:
退出失败后,它看起来像这样:
如果我有一个远程调试器连接到进程,此时,调试器将断开连接。
这可能是什么原因造成的?
我几乎确信这是launch4j中的一个错误,所以,我在这里报告了它:https ://sourceforge.net/p/launch4j/bugs/185/
解决方案
推荐阅读
- java - 如何在动态 Web 应用程序中使用 Gecko 驱动程序
- python - matplotlib 中相同 x-tick 标签内的不同字体大小
- magento-2.3 - Magento 在添加优惠券代码时显示错误的折扣?
- vue.js - booststrap-vue 中带有 RTL 的 Vuexy 问题?
- sql-server - 在 SQL Server 中创建一个 json,其中一列作为键,另一列作为值
- python - 熊猫重复索引在满足条件的 groupby 上删除行
- python - 如何从 Plotly 散点图中检索标签信息,仅包含我用套索或缩放突出显示的图中的样本(点)
- python-3.x - Python - 删除不必要的进程后程序变慢
- python - 从用户 discord.py 中删除每个角色
- python - CyberArk 自动部署 - Python