Java How To
 


Starten eines externen Programms und Programmausgabe verarbeiten

How To ...

Wie startet man ein externes Programm und erhält Zugriff auf die (Fehler-)Ausgaben des Programms?

Hintergründe

Um externe Programme auf Betriebssystemebene starten zu können, gibt es in der Klasse java.lang.Runtime die (sechsfach) überladene Methode exec(). Der Rückgabewert von exec() ist ein java.lang.Runtime-Objekt, eine Abstraktion eines Betriebssystemprozesses. Das Runtime-Objekt erlaubt mit den Methoden getInputStream(), getOutputStream() und getErrorStream() Zugriff auf die Ein- und Ausgabe, sowie die Fehlerausgabe des Programms.

So geht's

Da die (nichtgraphische) Ausgabe von Programmen eher in der UNIX-Welt verbreitet ist, versehen wir in diesem Beispiel den Aufruf des Acrobat Readers mit einer nicht vorhandenen Option, die den Acrobat Reader zur Ausgabe aller möglichen Optionen veranlasst.

	public static void main(String[] args) throws Exception {
		Process p = Runtime.getRuntime().exec("acroread -x test.pdf");	
		BufferedReader br = new BufferedReader(new InputStreamReader(p.getInputStream()));
		// oder die Fehlermeldungen
		//BufferedReader br = new BufferedReader(new InputStreamReader(p.getErrorStream()));
        String line = null;
        System.out.println("Programmausgabe");
        while ( (line = br.readLine()) != null) {
        	System.out.println(line);
        }
        System.out.println("Ende der Programmausgabe");
		System.out.println("Rückgabewert des Programms: " + p.waitFor());
	}
		

Die Ausgabe des Programms (gekürzt) ist die folgende:

Programmausgabe

Usage: /usr/X11R6/bin/acroread [options] [list of files]

Options:
    --display=<DISPLAY>
        This option specifies the host and display to use.
    --screen=<SCREEN>
        X screen to use. Use this options to override the 
	screen part of the DISPLAY environment variable.
    --sync
        Make X calls synchronous. This slows down the program considerably.

.....
.....

Ende der Programmausgabe
Rückgabewert des Programms: 0
		

Links