Hallo ,
ich habe das mittlerweile so gelöst. Es funktioniert und macht das, was ich will. Ist das OK?
Danke nochmals für deine ausführliche Antwort
ich habe das mittlerweile so gelöst. Es funktioniert und macht das, was ich will. Ist das OK?
Danke nochmals für deine ausführliche Antwort
Code:
public void konsoleEingabe(boolean neustart) {
String austalPfad = cf.pathToAustalExe;
String austalDirectory = curProjektPfad.split("austal2000.txt")[0];
if (curProjektPfad == null) {
JOptionPane.showMessageDialog(this, "Es ist kein Projekt ausgewählt oder erstellt worden!");
} else {
ProcessBuilder builder = null;
if( neustart ){
builder = new ProcessBuilder(austalPfad,"-D", austalDirectory);
} else {
builder = new ProcessBuilder(austalPfad, austalDirectory);
}
builder.redirectErrorStream(true);
Process p = null;
try {
p = builder.start();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
auslesen(p);
}
}
// Ein Thread ist noetig in Swing nutzung weil sonst die GUI blockiert wird
// deswegen laeuft die Methode seperat
void auslesen(final Process p) {
Executors.newSingleThreadExecutor().execute(new Runnable() {
public void run(){
BufferedReader r = new BufferedReader(new InputStreamReader(p.getInputStream()));
String line = null;
while (true) {
try {
line = r.readLine();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
if (line == null) {
break;
}
ergebnisAusgabe.append(line+"\r\n");
}
}
});
}