Java über batch file starten und shell Fenster anschließend schließen

deinertsche

Erfahrenes Mitglied
Hi!
Ich möchte meine Java-Klasse über einen batch file starten und in dem batch file noch alle jars aus dem lib Verzeichnis einbinden. So weit, so gut funktioniert das auch.

SETLOCAL EnableDelayedExpansion
if defined CLASSP (set CLASSP=%CLASSP%;.) else (set CLASSP=.)
FOR /R .\lib %%G IN (*.jar) DO set GBACLASSPATH=!CLASSP!;%%G
"%JAVA_HOME%\bin\javaw.exe" -cp "%CLASSP%" de.xyz.myClass
echo foobar
EXIT

Leider wird das shell Fenster nicht geschlossen. Genaugenommen kommt er gar nicht bis zur Zeile echo foobar weil der Java Aufruf die weitere Ausführung blockiert. Hat jemand eine Idee wieso?
 
Hallo,

versuchs mal mit:

startSwingSet2.cmd:
Code:
start javaw.exe -jar "C:/Program Files/Java/jdk1.6.0_13/demo/jfc/SwingSet2/SwingSet2.jar"

Btw. ab Java 6 kann man auch alle jars eines Verzeichnisses via * im cp-Setting angeben.
Siehe:
http://java.sun.com/javase/6/docs/technotes/tools/windows/java.html
As a special convenience, a class path element containing a basename of * is considered equivalent to specifying a list of all the files in the directory with the extension .jar or .JAR (a java program cannot tell the difference between the two invocations).

For example, if directory foo contains a.jar and b.JAR, then the class path element foo/* is expanded to a A.jar:b.JAR, except that the order of jar files is unspecified. All jar files in the specified directory, even hidden ones, are included in the list. A classpath entry consisting simply of * expands to a list of all the jar files in the current directory. The CLASSPATH environment variable, where defined, will be similarly expanded. Any classpath wildcard expansion occurs before the Java virtual machine is started -- no Java program will ever see unexpanded wildcards except by querying the environment. For example; by invoking System.getenv("CLASSPATH").

Funktioniert allerdings (derzeit) nur mit java.exe korrekt mit javaw.exe gibts nen Fehler:
http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6510337




Gruß Tom
 
Moin,

so aus dem Bauch heraus wird Du IMHO erst dann Dein 'echo' sehen, wenn die Java-Anwendung beendet ist .....

Aber wäre WebStart nicht sinniger :confused:

Gruß
KLaus
 
Danke für die Antworten aber ich verstehe nicht so recht, was das (Swing) mit meinem Problem zu tun hat. Ich kann dieses SwingSet zwar starten aber die Console wird trotzdem nicht geschlossen.

Wenn ich das ganze über
java.exe -cp .\lib\* de.xyz.myClass
starten will bekomme ich nur "could not find the main class"
 
Zuletzt bearbeitet:
Hallo,

Danke für die Antworten aber ich verstehe nicht so recht, was das (Swing) mit meinem Problem zu tun hat. Ich kann dieses SwingSet zwar starten aber die Console wird trotzdem nicht geschlossen.
... das war nur ein Beispiel wie man ein jar mit javaw Starten kann, ohne dass die Konsole geöffnet bleibt.

Bei start javaw ... geht die Konsole direkt weg...

Gruß Tom
 
Zurück