Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
关闭挂钩不是';t在使用javaw.exe启动应用程序时执行_Java_Windows - Fatal编程技术网

关闭挂钩不是';t在使用javaw.exe启动应用程序时执行

关闭挂钩不是';t在使用javaw.exe启动应用程序时执行,java,windows,Java,Windows,如果我使用javaw.exe启动Java应用程序,那么当用户从Windows帐户注销时,不会执行关闭挂钩。该应用程序实际上是使用launch4j生成的.exe文件启动的,但我知道它使用javaw.exe来启动它 这似乎是一个已知的错误: 还有其他人有这个问题吗?如果是,您是如何修复的 谢谢 该应用程序实际上是使用launch4j生成的.exe文件启动的,但我知道它使用javaw.exe来启动它 我已经有一段时间没有使用launch4j了,但如果它直接使用它,我会感到相当惊讶。这些应用程序中的大

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

这似乎是一个已知的错误:

还有其他人有这个问题吗?如果是,您是如何修复的

谢谢

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

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

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

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


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

此应用程序是一种服务吗?关机挂钩中有什么?它不是服务,而是GUI应用程序。我正在使用钩子关闭嵌入式数据库并保存应用程序设置。我想这个文件包含启动它的代码:@nicu-Yikes,我没有意识到。这是否意味着进程将在任务列表中显示为“javaw.exe”?不管怎样,将“忠诚”设置为真正的帮助吗?如果没有,我怀疑您将不得不自己用本机代码捕获WM消息(@jsight-感谢您花时间编写。我希望这个问题有一个简单的解决方案,这样我就不必编写自己的启动器了。1.Launch4j更改进程名称,这样javaw.exe就不会出现在任务列表中。2.stayAlive设置没有帮助。它只会导致任务列表中有两个同名的进程。@jsight,
javaw
中的
w
指的是什么?