Bonjour,
Je souhaite lancer dans mon programme une application externe, et que le programme attende que celle ci se termine.
Je pensais avoir compris l'utilisation de la méthode waitFor() de la classe Process mais après quelques jours passés sur ce problème...
Le bout de code que j'utilise est celui ci :Envoyé par Yann D'ISANTO, Developpez.com
L'application externe le process "sim", dont l'exe prend en paramètre un espace de travail ainsi qu'un fichier que je crée lors de la copie (BufferedCopy.cp).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 package fr.main; import java.io.File; import java.io.IOException; public class Run { public static void runSimulation(String dataIn, String dataOut, String pathWorkSpace) throws InterruptedException { String []simu ={"C:\\Program Files\\MonAppli\\src\\appliExterne.exe", pathWorkSpace}; // pathWorkSpace est un paramètre du .exe try { fr.utils.BufferedCopy.cp(dataIn,dataOut); // copie d'un fichier pour un paramètre du .exe Process sim = Runtime.getRuntime().exec(simu); sim.waitFor(); } catch (IOException e) { System.err.println(e.getMessage()); } } }
Après lancement du .exe, je devrais avoir un fichier de calcul en sortie. Néanmoins je constate que le calcul n'est pas terminé et étant donné que l'application externe fonctionne bien toute seule je soupçonne que mon programme n'attende pas que cette appli externe se termine. J'ai mis un sim.waitFor(); dans cette optique, pour que le programme attende que l'appli externe se termine pour poursuivre.
Est ce que lorsque j'ai codé :
Process sim = Runtime.getRuntime().exec(simu);
sim.waitFor();
Cela veut bien dire que le programme attend que le process sim se termine pour continuer ?
Merci par avance de votre aide !
Partager