ProcessBuilder: Aus Error reagieren

bero2020

Grünschnabel
Hallo zusammen,

ich versuche gerade aus Java heraus LaTeX Dateien zu kompilieren. Dazu habe ich mir einfach einen kleinen ProcessBuilder gebastelt, der die einzelnen Schritte übernimmt.
Nun habe ich folgendes Problem: Wenn der LaTeX Code syntaktisch nicht korrekt ist, kann meine LaTeX Distribution das Ganze auch nicht kompilieren. Leider gelingt es mir dann nicht auf diesen Error der Distribution zu reagieren und z.B. den Prozess zu killen. Hier mal ein Ausschnitt meines Threads der unter anderem die Dateien kompiliert:

Code:
......			
ProcessBuilder texBuilder = new ProcessBuilder("cmd","/c","latex template.tex");
texBuilder.directory(new File(System.getProperty("user.dir")+"/img/generate"));
texBuilder.redirectErrorStream(true);
Process p = texBuilder.start();
System.out.println("latex wird kompiliert");
Scanner s = new Scanner( p.getInputStream() ).useDelimiter( "\\Z" );
System.out.println( s.next() );
				  
p.waitFor();
.....

Ist der LaTeX Code korrekt läuft alles sauber durch und er macht anschließend mit dem Teil nach p.waitFor() weiter. Aber wenn was schief läuft hängt er fest und gibt mir vor allem auch nicht eine einzige Zeile aus dem InputStream in der Konsole aus.

Ich versteh nicht warum. Habe auch schon versucht mir das p.exitValue() geben zu lassen. Aber auch das gibt er nicht aus, wenn was schief läuft. Nur wenn alles gut geht, gibt er mir eine 0 zurück. Ich fange IO und InterruptedExceptions ab, aber auch da gibt es keine. Wie also kann ich erkennen, dass es ein Problem gab und den Prozess einfach killen?

Hoffe ihr könnt mir weiterhelfen!

Gruß
Benni
 
Zurück