Application über Batch-Datei starten

Hallo,
ich habe ein Batch-File über das ich meine Application in Windows starte d.h. es öffnet sich ein CMD-Fenster in dem dann die Konsoleausgaben erfolgen. Das funktioniet auch problemlos.

Nun möchte ich aber, dass das CMD-Fenster automatisch geschlossen wird
wenn die Java Anwendung beendet wird. Irgendwie funktioniert dies aber nicht richtig. Die letzten Befehle (goto ende) im Batch-File werden scheinbar nicht mehr durchlaufen !?

So sieht mein Batch-File bisher aus:

cls
rem This batch file starts Java-Application

rem This batch file is written and tested under Windows NT
rem Improvements to this file are welcome

if „%CLASSPATH%“ == „“ goto noclasspath
rem else

set ORIGCLASSPATH=%CLASSPATH%
set CLASSPATH=%CLASSPATH%;MEIN.jar;
rem Append your DB-driver classes to the CLASSPATH here

noclasspath

set ORIGCLASSPATH=
set CLASSPATH=%CLASSPATH%;MAIN.jar;
rem Append your DB-driver classes to the CLASSPATH here

java MEIN_APPLICATION „0“ „1“ „“ „4“ „“ „“ „“
goto ende

ende

rem clean up classpath after
set CLASSPATH=%ORIGCLASSPATH%
set ORIGCLASSPATH=
exit
echo.

Hallo,

Hallo

Nun möchte ich aber, dass das CMD-Fenster automatisch
geschlossen wird
wenn die Java Anwendung beendet wird. Irgendwie funktioniert
dies aber nicht richtig. Die letzten Befehle (goto ende) im
Batch-File werden scheinbar nicht mehr durchlaufen !?

wie beendest du deine Anwendung? : System.exit(0)

youssef

Da es sich um einen JFrame oder JWindow handelt beende ich es mit „dispose“

Danke

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

mit dispose ist die Applikation noch nicht beeendet.

aus dem online buch „java ist auch eine insel“
http://www.galileocomputing.de/openbook/javainsel4/j…

class WL extends WindowAdapter
{
public void windowClosing( WindowEvent e )
{
event.getWindow().dispose();
}
public void windowClosed( WindowEvent e )
{
// Das Fenster ist geschlossen, und jetzt können wir hier
// weitermachen, etwa mit System.exit(), wenn alles
// vorbei sein soll.
}
}

ich hoffe das hilft

youssef

DefaultCloseOperation setzen und Batch erweitern
Hallo,

wie Youssef schon beschrieben hat, muss du dem Frame noch ein entsprechendes Verhalten bei Drücken des Schließen-Buttons beibringen.

Am einfachsten geht da folgendes:

frame.setDefaultCloseOperation(WindowConstants.EXIT\_ON\_CLOSE);

oder eine der anderen Konstanten (je nach Bedarfsfall).
Dann brauchst du da nicht einen extra Adapter oder Listener ranhängen, der dann sowieso System.exit(0) aufrufen würde.

Das CMD-Fenster als solches kannst du auch direkt unterdrücken, indem du die Applikation folgendermaßen aus deiner Batchdatei heraus startest:

start javaw MeinJavaProgramm

Wenn du nun jedoch etwas via System.err oder System.out schreiben würdest, dann ist dies nicht zu sehen, denn dies landet ja automatisch auf der Konsole. Hierzu würde ich dir ein entsprechendes Log-Framework, z.B. log4j oder das JDK-Log empfehlen. Da kannst du dann z.B. in eine Datei loggen.

Ciao, Bill