Хук завершения работы не выполняется, когда приложение запускается с помощью javaw.exe - PullRequest
2 голосов
/ 18 июля 2009

Если я использую javaw.exe для запуска приложения Java, ловушка отключения не выполняется, когда пользователи выходят из своей учетной записи Windows. Приложение на самом деле запускается с помощью файла launch4j, сгенерированного .exe, но я знаю, что оно использует javaw.exe для его запуска.

Кажется, это известная ошибка: http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4302814

Кто-нибудь еще имел эту проблему? Если да, то как ты это исправил?

Спасибо!

1 Ответ

2 голосов
/ 19 июля 2009

Приложение на самом деле запускается с использованием файла сгенерированного launch4j .exe, но я знаю, что для его запуска используется javaw.exe.

Я давно не использовал launch4j, но был бы весьма удивлен, если бы он сделал это напрямую. Большинство этих приложений запускают jvm сами, а не обстреливают javaw.

Единственная разница между java.exe и javaw.exe заключается в том, что java.exe автоматически подключается к консоли. Ошибка, на которую вы ссылаетесь (и другие, на которые она ссылается), была закрыта, так как Sun, похоже, не заинтересована в улучшении обработки событий выхода из Windows. Насколько я могу судить, он работает только с java.exe, потому что сама консоль обрабатывает WM_MESSAGES таким образом, что замедляет процесс завершения работы.

Похоже, что единственный простой обходной путь на данный момент - это изменить "headerType" в вашей конфигурации launch4j на "console". Очевидно, это приносит с собой уродливую консоль.

Я думаю, что другой альтернативой было бы использовать какую-то нативную оболочку, которая обрабатывает сообщения Windows более чистым способом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...