59 votes

Comment définir le nom de processus d'un programme Java?

Si un programme Java est commencé, il est dans le processus de système-moniteur le nom de java. Beaucoup de Java, les programmes sont difficiles à distinguer. Donc ce serait bien, si un moyen existe pour définir le nom, qui sera affiché dans le processus de moniteur. Je suis conscient que cela peut fonctionner sur différents Systèmes d'Exploitation différents.

Un moyen simple serait, si le java-interprète seraient en faveur d'un interrupteur pour définir le nom, comme ceci:

java -processname MyProgram -jar MyProgram

Mais je n'arrivais pas à trouver un interrupteur, de sorte qu'il est probablement inexistant. Une API en Java pour définir le processus de nom serait bien aussi.

Donc, si vous avez des suggestions?

47voto

omerkudat Points 2536

Je ne sais pas si cela est possible, mais vous pouvez utiliser un outil de ligne de commande fourni avec le kit JDK appelé "jps". C'est comme * nix ps, mais juste des programmes java à la place. jps -v montre tous les arguments que vous avez passés à java.

En outre, j'ai vu des personnes associer un "nom de processus" à leurs processus Java en ajoutant un argument -Dmyprocessname inutilisé aux arguments.

20voto

d.raev Points 1382

comme @omerkudat a dit:

 jps -v
 

affiche tous les processus java {processID, liste de paramètres} Si la liste de paramètres ne suffit pas pour reconnaître les applications dont vous avez besoin, essayez d'ajouter des paramètres factices lors de leur exécution:

 java -Dname=myApp -cp  myApp.jar some.client.main.MainFrame
 

Cela va imprimer comme:

 7780 MainFrame -Dname=myApp
 

et vous pouvez utiliser l'ID de processus pour le tuer / le surveiller.

11voto

David Phillips Points 3413

J'ai écrit un shim LD_PRELOAD pour Linux qui vous permet de définir le nom du processus: https://github.com/electrum/procname

5voto

Tim Bender Points 11611

Lorsque j'ai lu ceci pour la première fois, l'idée de changer le nom du processus m'a semblé impossible. Toutefois, selon cet ancien fil de discussion sur le forum sun, vous pouvez utiliser des wrappers C ++ autour de l'exécutable JVM pour atteindre cet objectif.

Bien que franchement, je me demande quel est votre problème réel, car je suppose qu'il existe une solution plus standard que d'essayer de changer le nom du processus.

4voto

Noel Grandin Points 1773

Votre meilleure option est quelque chose comme launch4j http://launch4j.sourceforge.net/

Un bug a été enregistré dans sun bugtracker pour cela, mais ce n'est pas une priorité élevée http://bugs.sun.com/view_bug.do?bug_id=6299778

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