2010-05-20 10 views
1

dans une application Java J'ai besoin d'exécuter une application de console externe. Avec ceux de la fenêtre tout est OK:Lancement d'une application de console externe à partir de Java

try { 
System.out.println("Running..."); 
    Runtime.getRuntime().exec("notepad.exe"); 
    System.out.println("End."); 
} 
catch(Exception e) { 
    System.out.println(e.getMessage()); 
} 

lance le bloc-notes avec succès. Mais si je mets D:\\MyProg.exe ou .bat ou même cmd.exe (ce qui est PATH comme notepad), cela ne fonctionne pas. Sans aucune exception. Just:

Running... 
End. 

Répondre

-1

Il est parce que le bloc-notes placé dans le dossier spécial et ce dossier existe dans la variable Path.

Run cmd en utilisant la ligne suivante:

Runtime.getRuntime().exec("cmd.exe /c start"); 

Exécuter une autre application:

Runtime.getRuntime().exec("cmd.exe /c start C:\\path\\to\\app.exe"); 
+0

mais cmd.exe est aussi dans "PATH". mais ça ne marche pas. Aussi je préexiste le chemin "D: \\ MyProg.exe" mais cela n'aide pas. Et où dois-je exécuter votre "start"? En java ??? – Andrew

+0

Ouais, je voudrais, mais comme je l'ai mentionné ci-dessus Runtime.getRuntime(). Exec ("your.bat"); ne fonctionne pas trop – Andrew

+0

il ne lance tout simplement pas les * .bats – Andrew

3

Tout d'abord, le plus probable Runtime.exec() est de retour en mode asynchrone, de sorte que l'impression "fin" toujours travailler, depuis le L'appel exec revient immédiatement, ce que vous voyez.

Il y a beaucoup d'autres problèmes qui pourraient apparaître ici. Je pense que ce qui se passe est que les programmes que vous appelez peuvent sortir des E/S sur stdout que vous ne parvenez pas à lire, ou peut-être vous devez wait for it to finish avant de quitter le processus Java. Il ya un great article sur les différents problèmes avec Runtime.exec() vous devriez probablement lire, il couvre cela et d'autres problèmes.