Lancer un exe sous Java
La class Runtime dispose de 2 fonctions pour lancer et controler un executable.- exec(): lance le processus,
- waitFor(): attendre la fin de l'execution.
Dans l'exemple suivant, Runtime est utilisé pour lancer la calculatrice de Windows et lancer la commande DOS dir sur le répertoire courant (sous Linux, lancer la commande ls.)
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.logging.Level;
import java.util.logging.Logger;
/**
* Lancer un exécutable ou une commande externe
*/
public class RunExternal {
public static void launch(String command) {
try {
Runtime runtime = Runtime.getRuntime();
Process process = runtime.exec(command);
BufferedReader input = new BufferedReader(new InputStreamReader(process.getInputStream()));
String line = null;
while ((line = input.readLine()) != null) {
System.out.println(line);
}
//Attendre la fin de l'execution
if (process.waitFor() != 0) {
System.out.println("Une erreur est survenue ");
}
} catch (InterruptedException ex) {
Logger.getLogger(RunExternal.class.getName()).log(Level.SEVERE, null, ex);
} catch (IOException ex) {
Logger.getLogger(RunExternal.class.getName()).log(Level.SEVERE, null, ex);
}
}
/**
* Exemples
*/
public static void main(String args[]) {
//Lancer la calculatrice de Windows
RunExternal.launch("C://WINDOWS//system32//calc.exe");
//Lister le contenu d'un répertoire avec DOS
RunExternal.launch("cmd /c dir");
}
}
Agir avec un programme externe
L'exemple ci-dessous contient une boucle servant à capturer le résultat de l’exécutable, par exemple la commande dir utilisée sous DOS affichant les données suivantes dans la console.Repertoire de C:Documents and SettingsProprietaireMes documentsNetBeansProjectstemp_test
23/08/2010 09:54 <REP> .
23/08/2010 09:54 <REP> ..
23/08/2010 09:54 <REP> build
23/08/2010 09:49 3722 build.xml
23/08/2010 09:54 <REP> dist
23/08/2010 09:37 85 manifest.mf
23/08/2010 09:37 <REP> nbproject
23/08/2010 09:37 <REP> src
23/08/2010 09:37 <REP> test
2 fichier(s) 3807 octets
7 Rep(s) 57216233472 octets libres