使用 javaw.exe 启动应用程序时,不会执行关闭挂钩

2024-05-01

如果我使用 javaw.exe 启动 Java 应用程序,则当用户从其 Windows 帐户注销时,不会执行关闭挂钩。该应用程序实际上是使用 launch4j 生成的 .exe 文件启动的,但我知道它使用 javaw.exe 来启动它。

这似乎是一个已知的错误:https://bugs.java.com/bugdatabase/view_bug?bug_id=4302814 https://bugs.java.com/bugdatabase/view_bug?bug_id=4302814

有没有其他人有这个问题?如果是这样,你是如何解决的?

Thanks!


该应用程序实际上是使用 launch4j 生成的 .exe 文件启动的,但我知道它使用 javaw.exe 来启动它。

我已经有一段时间没有使用 launch4j 了,但如果它直接执行此操作,我会感到相当惊讶。大多数这些应用程序自己启动 jvm,而不是使用 javaw。

java.exe 和 javaw.exe 之间的唯一区别是 java.exe 自动附加控制台。您引用的错误(以及它引用的其他错误)已被关闭,因为 Sun 似乎对更好地处理 Windows 注销事件不感兴趣。据我所知,它只适用于 java.exe,因为控制台本身处理 WM_MESSAGES 的方式会减慢关闭过程。

目前看来唯一简单的解决方法是将 launch4j 配置中的“headerType”更改为“console”。显然,这带来了一个丑陋的控制台。

我认为另一种选择是使用某种本机包装器以更干净的方式处理 Windows 消息。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 javaw.exe 启动应用程序时,不会执行关闭挂钩 的相关文章

随机推荐