Runtime.exec() Exception Problem

Network

Top Contributor
Hi,

ich hab eine jar die vom Benutzer gestartet wird, diese wiederum startet (wenn vom Benutzer angefordert) eine 2. jar.
Das mache ich über
Java:
Runtime.exec(String[]{ "java", "-jar", "Second.jar" })

Jetzt hab ich ein bischen rumprobiert und da ist mir aufgefallen,
dass in der 2. jar (sofern sie nicht direkt vom Benutzer aufgerufen wurde) der Code, in den Exceptions, nie ausgeführt wird!
"Ein bischen durchs Internet lesen" hat mich zu dem Punkt gebracht, dass ich anscheinend mit Process.getErrorStream() und Process.getInputStream() die Exceptions manuell behandeln muss ???:L :shock:

Wo ist denn da der Sinn bei der Sache?
In den Exceptions steht Code um den Fehler zu vermeiden oder zu umgehen, und genau das wird jetzt einfach nicht mehr beachtet...

Gibt es irgendwas um genau diese Tatsache zu umgehen?
Also das 2. Java Programm sollte bestmöglich wieder der Code in den Exceptions ausführen.

Vielen Dank
MfG
Network
 
Zuletzt bearbeitet:
Was meinst du denn mit "Code in den Exceptions"? Deine Fehlerbehandlung in den catch Blöcken? Was genau machst du denn da, dass nicht ausgeführt wird?

Zum Error- und Inputstream: Alles was in Second.jar in den OutputStream oder den ErrorStream geschrieben wird kommt bei dir im Error- bzw. InputStream des erstellten Prozesses an. Wenn du also willst dass der Nutzer irgendwelche Exceptions sieht musst du die explizit weiterleiten.
 
Was meinst du denn mit "Code in den Exceptions"? Deine Fehlerbehandlung in den catch Blöcken? Was genau machst du denn da, dass nicht ausgeführt wird?

Zum Error- und Inputstream: Alles was in Second.jar in den OutputStream oder den ErrorStream geschrieben wird kommt bei dir im Error- bzw. InputStream des erstellten Prozesses an. Wenn du also willst dass der Nutzer irgendwelche Exceptions sieht musst du die explizit weiterleiten.

Also ja mit Code in den Exceptions meine ich die Fehlerbehandlung, entschuldigung bin da wohl etwas durcheinander gekommen.

Also ich habe falsche unerwartete Variablenwerte mal manuell ins Programm eingetippt in den Quellcode von "Second.jar", sodass eine Exception geworfen wird.
Der ErrorInputStream zeigt jetzt im cmd-Fenster vpn "First.jar" den Fehler an und in welcher Zeile dieser aufgetreten ist.

Jetzt schaue ich in den Quelltext von "Second.jar", suche die Zeile heraus.
Die Zeile in der die Exception geworfen wurde (Network: unreachable) liegt in einer Methode die so aufgebaut ist
Java:
private void check() {
     try {
          scanData();
     }
     catch(Exception e) {
          JOptionPane.showMessageDialog( null, e.getMessage(), "Error", 0 );
     }
}
private void scanData() throws Exception {
}

Anstatt dass jetzt dass JOptionPane mit der Fehlermeldung auftaucht, passiert nichts. Das Programm bleibt stehen und... ende
Normalerweise steht dort Code zum umgehen des Fehlers, aber ich wollte testen ob da wirklich nichts passiert...
 
Also hat sich jetzt erledigt...
Ich hab einfach versucht den Error und Input Stream aufzufangen und siehe da... alles funktioniert wieder normal.
Wenn man einfach auslässt den InputStream sowie den ErrorStream zu lesen dann bleibt das ganze hängen an stellen wie System.out.println(); und sowas...
 

Neue Themen


Zurück
Oben