Salut tout le monde !
Je veux obtenir la sortie d"une application C + + à partir d'une applications Java. J'ai utilisé un fichier abs.bat pour le faire
J'ai utilisé ce code dans bat.:
Code :
- start readxmlresou.exe
|
cette ligne decommande ouvre readxmlresou.exe qui est l'exécutable essue de l'application codé dan VS2010C++,cet exécutable setrouve dans mon bureau, cette commande l'exécute aussi, maintenant je veux obtenir le résultat de l'exécutable dans lapplication appelante java, j'ai écrit ce code mais il ne fonctionne pas:
Code :
- public Process DoSysCommand(boolean bWait) throws IOException
- {
- Runtime runtime1 = Runtime.getRuntime();
- final Process process = runtime1.getRuntime().exec(new String[]{"C:\\Users\\abdelhalim\\Desktop\\abs.bat", "readxmlresou.exe"}, null, new File("C:\\Users\\abdelhalim\\Desktop\\" ));
- process.getInputStream();
- OutputStream out = null;
- InputStream in= null;
- // Consommation de la sortie standard de l'application externe dans un Thread separe
- new Thread() {
- public void run() {
- try {
- BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
- String line = "";
- try {
- while((line = reader.readLine()) != null) {
- // Traitement du flux de sortie de l'application si besoin est
- System.out.println("line="+ line);
- }
- } finally {
- reader.close();
- }
- } catch(IOException ioe) {
- ioe.printStackTrace();
- }
- }
- }.start();
- // Consommation de la sortie d'erreur de l'application externe dans un Thread separe
- new Thread() {
- public void run() {
- try {
- BufferedReader reader = new BufferedReader(new InputStreamReader(process.getErrorStream()));
- String line = "";
- try {
- while((line = reader.readLine()) != null) {
- // Traitement du flux d'erreur de l'application si besoin est
- }
- } finally {
- reader.close();
- }
- } catch(IOException ioe) {
- ioe.printStackTrace();
- }
- }
- }.start();
- try
- {
- process.getInputStream();
- if(bWait)
- {
- process.waitFor();
- }
- }
- catch(InterruptedException e)
- {
- System.err.println(e.getMessage());
- }
- return process;
- }
- }
|
ce que je reçois quand je click le bouton dans l'interface graphique en Java est le resultat de l'exécution readxmlresou.exe (la console VS2010 c + + montre la sortie de l'application C + + readxmlresou.exe ) et puis il se bloque là, les 2 applications se bloquent à ce stade, même l'application C ++ ne se ferme pas????
Je vais essayer de le comprendre, donc si vous avez une idée à ce sujet, je suis vraiment très reconnaissante pour votre aide
---------------
when there is a will there is a way