lancer un programme .exe [runtime] - Java - Programmation
MarshPosté le 12-04-2007 à 10:17:00
Bonsoir,
J'aimerais avoir votre aide concernant l'éxecution d'un programme .exe via la JVM. En fait le programme chess.exe est un programme indépendant qui prend ses données dans des fichiers textes et mets une réponse en fonction dans le fichier reponse.txt.
Ce que je souhaite faire, c'est lancer le .exe lors du clic sur un objet et en fonction de la valeur ecrite dans reponse.txt je fais mes traitements.
Le problème est que lorsque j'effectue cet appel le programme java se bloque et le fichier reponse.txt n'est pas crée.
Mon code de départ était celui la :
Code :
try{
Runtime runtime = Runtime.getRuntime();
Process p = runtime.exec("C:\\Documents and Settings\\Louis-Alexandre\\Bureau\\CHESS\\CHESS\\CHESS\\chess.exe" );
while(p.waitFor()!=0){System.out.println("proc en cours" );}
} catch (IOException e1) {
JOptionPane.showMessageDialog(null,"Error","Impossible de lancer le programme c",JOptionPane.ERROR_MESSAGE);
} catch (InterruptedException e2) {
e2.printStackTrace();
}
Après m'être renseigné j'ai vu que je n'étais pas le seul a avoir le même problème et il faut lire les flux d'e/s pour les erreurs pour eviter que le buffer soit plein et bloque le programme.
Voici le nouveau bout de code :
Code :
//On fais appel au programme C
String args[] = new String[1];
args[0] = "C:\\Documents and Settings\\Louis-Alexandre\\Bureau\\CHESS\\CHESS\\CHESS\\chess.exe";
final CommandRunner runner = new CommandRunner(args, null);
System.out.println("Attente de la fin du processus "+runner);
Marsh Posté le 12-04-2007 à 10:17:00
Bonsoir,
J'aimerais avoir votre aide concernant l'éxecution d'un programme .exe via la JVM.
En fait le programme chess.exe est un programme indépendant qui prend ses données dans des fichiers textes et mets une réponse en fonction dans le fichier reponse.txt.
Ce que je souhaite faire, c'est lancer le .exe lors du clic sur un objet et en fonction de la valeur ecrite dans reponse.txt je fais mes traitements.
Le problème est que lorsque j'effectue cet appel le programme java se bloque et le fichier reponse.txt n'est pas crée.
Mon code de départ était celui la :
Après m'être renseigné j'ai vu que je n'étais pas le seul a avoir le même problème et il faut lire les flux d'e/s pour les erreurs pour eviter que le buffer soit plein et bloque le programme.
Voici le nouveau bout de code :
Les classes CommandRunner .. sont issus de ce site et permettent de bouffer les flux de sortie et d'erreur :
http://sgamel.free.fr/spip.php?article38
Le problème est que malgré tout cela je n'y arrive pas !
Quelqu'un pourrait m'aider ?