2 votes

Le crochet d'arrêt n'est pas exécuté lorsque l'application est lancée en utilisant javaw.exe

Si j'utilise javaw.exe pour lancer une application Java, le hook de fermeture n'est pas exécuté lorsque les utilisateurs se déconnectent de leur compte Windows. L'application est en fait lancée en utilisant un fichier .exe généré par launch4j mais je sais qu'elle utilise javaw.exe pour le démarrer.

Il semble s'agir d'un bug connu : https://bugs.java.com/bugdatabase/view_bug?bug_id=4302814

Est-ce que quelqu'un d'autre a eu ce problème ? Si oui, comment l'avez-vous résolu ?

Merci !

2voto

jsight Points 16025

L'application est en fait lancée à l'aide d'un fichier .exe généré par launch4j, mais je sais qu'elle utilise javaw.exe pour le démarrer.

Je n'ai pas utilisé launch4j depuis un moment, mais je serais assez surpris s'il le faisait directement. La plupart de ces applications lancent la machine virtuelle Java elles-mêmes, plutôt que de se brancher sur javaw.

La seule différence entre java.exe et javaw.exe est que java.exe attache automatiquement une console. Le bogue auquel vous faites référence (et les autres mentionnés par lui) ont été clos car Sun ne semble pas intéressé à améliorer la gestion des événements de fermeture de session Windows. D'après ce que je peux dire, cela ne fonctionne qu'avec java.exe, car la console elle-même gère les WM_MESSAGES d'une manière qui ralentit le processus de fermeture.

Il semble que la seule solution de contournement facile pour le moment est de modifier le "headerType" dans la configuration de votre launch4j en "console". Bien sûr, cela entraîne l'apparition d'une console moche.

Je pense que l'autre alternative serait d'utiliser une sorte d'enveloppe native qui gère les messages Windows de manière plus propre.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X