Est-il possible d'obtenir la commande utilisée pour lancer la jvm de java?
Je voudrais savoir si il est possible d'obtenir de code de la commande utilisée pour lancer un programme java.
E. g. si je lance un programme java avec:
java -cp lib1:lib2:... -jar mylib.jar com.foo.Bar
Je voudrais obtenir la chaîne de caractères exacte (jvm paramètres inclus).
Est-il possible?
Commentaire sur la générosité et la question
Merci à tous pour vos réponses. Malheureusement, je n'ai pas la réponse, j'ai été initally à la recherche pour. J'espérais qu'il y avait une certaine solution portable pour obtenir l'ensemble de commande java à partir du programme lui-même (y compris le chemin de classe, etc.). Comme il semble qu'il y a pas de solution portable et depuis que j'utilise Linux, je suis en utilisant les réponses de agodinhost et Luigi R. Viggiano à résoudre mon problème. Cependant je donne la prime à rahulroc pour la plus complète (portable) de réponse. Pour le reste un upvote pour tous 🙂
- Il exécutera la commande de systèmes d'exploitation par le biais de java. Il veut obtenir que la commande utilisée dans l'invite de commande.
- supprimé ce commentaire. merci
- vous êtes à la recherche pour obtenir la commande de l'intérieur le programme en cours d'exécution?
- oui, akf, exactement
Vous devez vous connecter pour publier un commentaire.
Mentionnés ci-dessous de code doit montrer tous les paramètres de la JVM, les arguments passés à la méthode main ainsi que le nom de la classe principale.
javadoc pour getInputArguments
Vous pouvez également jeter un oeil à : jps
Vous pouvez trouver un bon résumé des différentes JVM outils, y compris
Java Lanceur D'Application les liens :
ManagementFactory.getRuntimeMXBean(
) - Renvoie le managed bean pour le système d'exécution de la machine virtuelle Java.getInputArguments()
javadocList inputArgs = ManagementFactory.getRuntimeMXBean().getInputArguments(); if (!inputArgs.contains("-Xdebug"))
- il n'est donc pas très pertinent depuis Java 5.Vous pouvez utiliser cette pour récupérer les paramètres de la VM :
Cependant il ne vous donnera pas tous de la ligne de commande (seulement donne des arguments JVM, pas de classe ni de paramètres). Exemple de sortie:
Il ne fonctionne que sur les
SoleilOracle de la JVM:System.getProperty("sun.java.command")
En outre, vous pouvez jeter un oeil à JavaSysMon, il peut signaler de ligne de commande de processus actifs. Pour vérifier qui est l'actuel Processus de JVM vérifier ici: Comment un programme Java obtenir son propre ID de processus?
$ java -showversion -classpath toys/ -Xms16M -Xmx20M Env | grep command java version "1.7.0_09" Java(TM) SE Runtime Environment (build 1.7.0_09-b05) Java HotSpot(TM) 64-Bit Server VM (build 23.5-b02, mixed mode)
sun.java.commande=Env Env est un programme Java simple pour vider les propriétés système de sortie standard.dans une machine linux serait plus facile à exécuter:
cette commande liste tous les programmes java s'exécutant avec les paramètres utilisés.
Pas sûr de ce que peut être utilisé dans un environnement windows.
Dans le gestionnaire de tâches sur Win2003, vous pouvez activer l'affichage d'une colonne qui affiche la commande comme il le fait sur linux. Ou, vous pouvez le faire à partir de la ligne de commande comme ceci: