Ich habe eine Konsolenanwendung welche ich über eine weitere Javaanwendung (noch Konsole, später GUI) starte und deren Streams (Input, Output und Error) ich im aufrufenden Programm kontrolliere.
Ich möchte damit erreichen, dass ich der Konsolenanwendung, welche nicht von mir ist, via GUI Konsoleneingaben geben kann und den entsprechenden Output bekomme.
Hier mal ein vereinfachtes Beispiel, nur zum Anzeigen des Errorstreams:
Starte ich externesProgram.jar direkt in einem Command Prompt, läuft die Startroutine dieses Programms unter einer Sekunde. Starte ich es über den geposteten Code, dauert es 15 Sekunden.
Das externe Programm wird für gewöhnlich mit den Parametern -Xms1024M -Xmx1024M (wie im .exec zu sehen) gestartet. Funktioniert diese Resourcenvergabe eventuell nicht, wenn das externe Programm über ein anderes Javaprogramm aufgerufen wird, oder hat jemand sonst eine Idee, woher dieser enorme Unterschied her kommen kann?
Ich möchte damit erreichen, dass ich der Konsolenanwendung, welche nicht von mir ist, via GUI Konsoleneingaben geben kann und den entsprechenden Output bekomme.
Hier mal ein vereinfachtes Beispiel, nur zum Anzeigen des Errorstreams:
Java:
class Test {
public mindcraft() throws IOException {
System.out.println("Minecraft Tool");
Process p = Runtime.getRuntime().exec("java -Xms1024M -Xmx1024M -jar externesProgramm.jar");
BufferedReader buff = new BufferedReader(new InputStreamReader(p.getErrorStream()));
String temp;
while ((temp = buff.readLine()) != null) {
System.out.println(temp);
}
}
}
public class JavaApplication {
public static void main(String[] args) {
new Test();
}
}
Starte ich externesProgram.jar direkt in einem Command Prompt, läuft die Startroutine dieses Programms unter einer Sekunde. Starte ich es über den geposteten Code, dauert es 15 Sekunden.
Das externe Programm wird für gewöhnlich mit den Parametern -Xms1024M -Xmx1024M (wie im .exec zu sehen) gestartet. Funktioniert diese Resourcenvergabe eventuell nicht, wenn das externe Programm über ein anderes Javaprogramm aufgerufen wird, oder hat jemand sonst eine Idee, woher dieser enorme Unterschied her kommen kann?