Bonjour,

Je voudrais exécuter une application externe à mon programme Java, mais je voudrais que celui-ci continue à s'exécuter, même si mon programme est arrêté.

Donc, pour exécuter un programme externe, j'utilise la classe Process, et comme conseillé sur le blog de adiGuba (http://blog.developpez.com/adiguba/p...s-plus-simple/), je vide mes flux grâce à cette classe :

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
public class Drain extends Thread {
 
        private final InputStream stream;
 
        public Drain(InputStream inputstream) {
            stream = inputstream;
        }
 
        @Override
        public void run() {
            try {
                while (stream.read() != -1) {
                }
            } catch (IOException ioexception) {
            }
        }
    }
Ce qui donne l'appel suivant :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
            Process process = Runtime.getRuntime().exec(new String[]{
                (new File(MON_FICHIER_EXE)).getPath()
            });
            new Drain(process.getErrorStream()).start();
            new Drain(process.getInputStream()).start();
Donc, il me semble avoir tout suivi correctement...

Cependant, si je ne m'abuse, si je termine mon application Java (qui se termine "malheureusement" par un System.exit(0)), le processus lancé continue à être exécuté, mais les flux ne sont plus vidés...

Ai-je un moyen de faire cela vraiment proprement, car actuellement, j'ai un peu l'impression de le faire qu'à moitié...


Merci d'avance pour vos réponses