Hallo liebe community,
ich habe eine Methode erstellt, was eine exe startet, welches in der Konsole läuft. Im weiteren wird in die Konsole ein Pfad eingegeben, womit dann das Programm eine Berechnung startet. Die Werte für die Berechnung entnimmt die Exe einer txt Datei. Naja das Problem hierbei ist, dass ich die Konsolenausgabe mir in die eine TextArea ausgeben will und das natürlich in Echtzeit.
Mit meiner Methode funktioniert die Ausgabe in der Konsole von Eclipse, aber nicht in meiner TextArea und ich habe zurzeit überhaupt keine Idee wieso. Nun habe ich nur noch wenig Zeit für meine Bachelorarbeit und stehe unter Druck. Ich hoffe ihr könnte mir aktiv helfen.
Danke an alle dir mir helfen und an die die sich wenigstens das Problem durchlesen
ich habe eine Methode erstellt, was eine exe startet, welches in der Konsole läuft. Im weiteren wird in die Konsole ein Pfad eingegeben, womit dann das Programm eine Berechnung startet. Die Werte für die Berechnung entnimmt die Exe einer txt Datei. Naja das Problem hierbei ist, dass ich die Konsolenausgabe mir in die eine TextArea ausgeben will und das natürlich in Echtzeit.
Mit meiner Methode funktioniert die Ausgabe in der Konsole von Eclipse, aber nicht in meiner TextArea und ich habe zurzeit überhaupt keine Idee wieso. Nun habe ich nur noch wenig Zeit für meine Bachelorarbeit und stehe unter Druck. Ich hoffe ihr könnte mir aktiv helfen.
Danke an alle dir mir helfen und an die die sich wenigstens das Problem durchlesen
Code:
private 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 {
// TODO Thread einbauen
// ProcessBuilder auf thread umstellen und asynchron in das TextFeld ergebnisAusgabe schrieben mittels .append
// Siehe JavaCommandLineWrapperExample Zeile 80ff.
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();
}
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);
ergebnisAusgabe.setText(line);
System.out.println(line);
}
}
}