Au début d'un processus en Java?
Est-il un moyen de démarrer un processus en Java? dans .Net c'est fait avec par exemple:
System.Diagnostics.Process.Start("processname");
Est-il un équivalent en Java donc je peut alors permettre à l'utilisateur de trouver l'application et ensuite, il serait de travailler pour n'importe quel système d'exploitation?
Vous devez vous connecter pour publier un commentaire.
http://www.rgagnon.com/javadetails/java-0014.html
Vous pouvez obtenir le chemin d'accès local à l'aide des propriétés du Système ou une méthode similaire.
http://download.oracle.com/javase/tutorial/essential/environment/sysprop.html
.exec(String[])
forme de la méthode, pas la seule chaîne.exec(String)
formulaire n'est pas une ligne de commande du processeur - il simplement se divise sur les espaces. Ils donnent le même résultat pour cet exempletree.com /A
, mais qui sont différents si, par exemple, un nom de fichier avec des espaces.Voir
de l'Exécution.exec()
et laProcessus
classe. Dans sa forme la plus simple:Noter que vous avez aussi besoin de lire le processus de production (par exemple:
myProcess.getInputStream()
) -- ou le processus va se bloquer sur certains systèmes. Cela peut être très déroutant la première fois, et devraient être inclus dans l'introduction de ces Api. Voir James P. de réponse pour un exemple.Vous pouvez également regarder dans le nouveau
ProcessBuilder
classe, ce qui rend plus facile de modifier des variables d'environnement et d'invoquer les sous-processus :La Classe Java Bibliothèque représente un processus externe à l'aide de la
java.lang.Processus
classe. Les processus peuvent être créés à l'aide d'unjava.lang.ProcessBuilder
:ou l'ancienne interface exposée par la surcharge
exec
méthodes sur lajava.lang.Runtime
classe:Ces extraits de code se frayer un nouveau processus, qui généralement s'exécute de façon asynchrone et peut être en interaction avec grâce à la naissance de
Processus
objet. Si vous avez besoin de vérifier que le processus est terminé (ou attendre qu'il se termine), n'oubliez pas de vérifier que la valeur de sortie (code de sortie) retournés parprocessus.exitValue()
ouprocessus.waitFor()
est comme prévu (0 pour la plupart des programmes), puisque aucune exception n'est levée si le processus se termine anormalement.Également noter que le code supplémentaire est souvent nécessaire de gérer le processus d'e/S correctement, comme décrit dans la documentation pour le
Processus
de la classe (italiques ajoutés):Une façon de s'assurer que les I/O sont gérées correctement et que la valeur de sortie indique la réussite est d'utiliser une bibliothèque comme
jproc
qui traite avec les subtilités de la capture de la sortie standard stdout et stderr, et offre un moyen simple synchrone interface pour exécuter les processus externes:jproc
est disponible via maven central: