有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java当使用javaw启动应用程序时,不会执行关闭钩子。exe

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

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

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

谢谢


共 (1) 个答案

  1. # 1 楼答案

    The application is actually launched using a launch4j generated .exe file but I know it uses javaw.exe to start it.

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

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

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

    我认为另一种选择是使用某种on的原生包装器,以更干净的方式处理windows消息