G
grayson
Gast
hallo !
ich habe folgendes problem :
in meiner anwendung baue ich einen command string zusammen wie diesen : java -cp .:/blah.jar:/huhu.jar ect com.iqdoq.pdf.Generator configfile=../../../../../home/grayson/BertelTest/bertel/deploy/config.xml
diesen schreibe ich in eine batch bzw sh datei ( je nach system ) , welche ich später auf knopfdruck wenn ich die config.xml geändert hab starten kann.
in etwa so :
daraufhin wird sie auch ausgeführt und alles ist fein.
nun gibt es aber das problem, das ich mein programm auch mal abbrechen möchte .... ( system.exit(0))
dummerweise wird nur meine gui beendet, die sh bzw batchdatei wird im hintergrund weiter ausgeführt, föllig wumpe ob ich für meine Runtime explizit exit oder halt oder add shutdownhook aufrufe.
auch das zerstören der Process mit p.destroy() bringt nichts.. die aufgerufene datei läuft ungerührt weiter.
wenn ich die erstellte datei allerdings manuell starte und mit strg+c abbreche funktioniert es.
wie k ann ich nun mein programm so abwürgen das wirklich alles beendet wird?
ich habe folgendes problem :
in meiner anwendung baue ich einen command string zusammen wie diesen : java -cp .:/blah.jar:/huhu.jar ect com.iqdoq.pdf.Generator configfile=../../../../../home/grayson/BertelTest/bertel/deploy/config.xml
diesen schreibe ich in eine batch bzw sh datei ( je nach system ) , welche ich später auf knopfdruck wenn ich die config.xml geändert hab starten kann.
in etwa so :
Code:
try {
Runtime run = Runtime.getRuntime();
run.traceInstructions(true);
run.traceMethodCalls(true);
String[] callAndArgs = {
"cmd", "/C", mBertelPath + "\\runit.bat"};
Process p = run.exec(callAndArgs);
new StreamReader("STDERR", p.getErrorStream()).start();
new StreamReader("STDOUT", p.getInputStream()).start();
System.out.println("launched...");
System.out.println(p.exitValue());
System.out.println("exited...");
}
catch (Exception e) {
System.out.println(e.getMessage().toString());
}
}
daraufhin wird sie auch ausgeführt und alles ist fein.
nun gibt es aber das problem, das ich mein programm auch mal abbrechen möchte .... ( system.exit(0))
dummerweise wird nur meine gui beendet, die sh bzw batchdatei wird im hintergrund weiter ausgeführt, föllig wumpe ob ich für meine Runtime explizit exit oder halt oder add shutdownhook aufrufe.
auch das zerstören der Process mit p.destroy() bringt nichts.. die aufgerufene datei läuft ungerührt weiter.
wenn ich die erstellte datei allerdings manuell starte und mit strg+c abbreche funktioniert es.
wie k ann ich nun mein programm so abwürgen das wirklich alles beendet wird?