2009-10-13 5 views
0

Nous sommes confrontés à des problèmes pour redémarrer la fermeture d'un fichier .JAR en cours d'exécution started with the "java -cp".Comment arrêter un fichier * .JAR en cours d'exécution avec un script batch?

Killing java.exe a bien fonctionné.

Mais ... n'y a-t-il pas un moyen plus fluide pour l'application? (Il enregistre les données à l'arrêt)

De même, comment peut-on simuler une entrée de clé au message suivant "Enter any key to continue..." avec un fichier batch?

Merci pour toute aide!

Répondre

6

L'ensemble suivant des scripts de traitement par lots peut être utilisé pour démarrer/arrêter jarres/tout programme

start-jar.bat

start "win_title" java -jar [jar file] [jar options] 

cela commence essentiellement votre pot (le programme) dans une fenêtre avec titre défini sur "win_title".

vous pouvez utiliser un autre lot pour tuer la fenêtre commencé

stop-jar.bat

TASKKILL /FI "WINDOWTITLE eq win_title 
+1

TASKKILL/FI "WINDOWTITLE eq win_title" la dernière citation est manquante – har

0

Utilisez le PAUSE [message] d'attendre une pression de touche:

PAUSE Hit any key to continue.. 

Comme pour tuer votre application, il existe des moyens JMX de le faire - mais je trouve un moyen facile d'avoir une prise écoute sur un port local, puis vous pouvez facilement lui envoyer une commande kill et laisser votre programme gérer l'arrêt.

+0

Oh, je sais que, avec le bouton de pause, mais comment puis-je faire une demande aller passé cet événement par programme (dans le lot)? –

+0

Une fois que vous attendez une pression sur une touche, elle va continuer à attendre - je pense que vous demandez un peu trop d'un simple fichier batch. – Gandalf

0

L'excellent Java Service Wrapper vous permettra d'installer facilement des gestionnaires de signaux pour votre application Java.

0

Demandez à votre application créer un fichier temporaire au démarrage et vérifier périodiquement si elle existe encore. Votre script de traitement par lots peut simplement supprimer ce fichier pour mettre fin à l'application.

0

Si vous devez faire un peu de nettoyage avant que votre processus est arrêté, un coup d'oeil à Shutdown Hooks.

du Q & A dans le lien:

D'accord, mais ne je dois écrire beaucoup de code juste pour enregistrer un crochet d'arrêt simple?

No. crochets d'arrêt simples peuvent souvent être écrits comme des classes internes anonymes, comme dans cet exemple:

Runtime.getRuntime().addShutdownHook(new Thread() { 
    public void run() { database.close(); } 
}); 
Questions connexes