Thomas: Classpath mumpitz

Hallo allemann!

Ich habe mich heute mit JAVA an diesem drecks monopolistischem Betriebssystem und seiner noch bescheuerteren DOS Konsole versucht und hätte die Kiste beinah ausm Fenster geworfen.
Mein Debakel ist - eigentlich ganz banal und nicht Win abhängig - den Classpath richtig zu setzen. Haut nicht hin. Natürlich liegts am Benutzer, aber Billi die Schuld zuzuweisen ist ja immer einfacher... : )

Situation:
Ich habe in mein Eclipse Projekt 3 externe Jars eingebunden und mein Program in Eclipse unter Windows erfolgreich getestet.
Jetzt will ich meine Klassen extern aufrufen können:
1 Starterklasse ST.class, 1 Server, 1 Singleton in meinem Paket,
3 externe Jars A.jar B.jar C.jar

Wie kann ich nun erfolgreich aus einer start.bat datei mein App starten?

java -classpath ".\*jar" ST
geht nicht

mit absoluten Pfaden
java -classpath "c:\abs\A.jar";"c:\abs\B.jar";"c:\abs\C.jar";"c:\pfadZurKlasseST" ST
geht nicht

java -classpath "c:\abs\A.jar";"c:\abs\B.jar";"c:\abs\C.jar";"c:\pfadZurKlasse" ST.class
(sollte nicht gehen) - tut auch nicht

Hab in Eclipse ne ausführbare Jar aus meinem Paket ST, SV, SI generiert und kann ST starten, leider wird A B C nicht gefunden

java -jar meinpaket.jar ST
geht nicht

java -jar meinpaket.jar ST -classpath "c:\abs\A.jar";"c:\abs\B.jar";"c:\abs\C.jar"
geht nicht

Was zur Hölle ist falsch? Habs natürlich nicht unter Linux ausprobiert, aber da ist es auch das gleiche Verhalten.

Danke für euer Mitgefühl und um hoffentlich eine Antwort,
Thomas

  1. Hej,

    Wie kann ich nun erfolgreich aus einer start.bat datei mein App starten?

    Zu Windows kann ich dir nichts genaues sagen, weil ich dieses momentan nichtmal zum testen da habe, aber ...

    java -classpath ".\*jar" ST

    das sollte sowieso nicht nötig sein, i.a.R. wird das aktuelle Verzeichnis sowieso zum CP hinzugefügt. Außerdem: Wenn du schon alle JARs eines Verzeichnisses zum CP hinzufügen möchtest, reicht es das Verzeichnis selber hinzuzufügen. Zuletzt verheimlichst du uns, was für eine Fehlermeldung der Aufruf verursacht hat. Lass mich raten: Es stört sich an den Anführungszeichen?

    java -classpath "c:\abs\A.jar";"c:\abs\B.jar";"c:\abs\C.jar";"c:\pfadZurKlasseST" ST

    s.o.

    java -classpath "c:\abs\A.jar";"c:\abs\B.jar";"c:\abs\C.jar";"c:\pfadZurKlasse" ST.class

    s.o. und das sowieso nicht. Das Postfix .class ist in diesem Aufruf nicht zulässig. Die Klasse und nicht die Datei wird aufgerufen. In dem Zusammenhang ist es zwar nicht falsch, aber zeugt von keinem Guten Stil, deine Klassen dem Default-Paket zuzuordnen und nicht in einer eigenen Klassenhierarchie zu verwalten.

    Hab in Eclipse ne ausführbare Jar aus meinem Paket ST, SV, SI generiert und kann ST starten, leider wird A B C nicht gefunden
    java -jar meinpaket.jar ST

    Sind die externen JARs in dein Aufrufbares eingebunden?

    java -jar meinpaket.jar ST -classpath "c:\abs\A.jar";"c:\abs\B.jar";"c:\abs\C.jar"

    Ich meine mich zu erinnern, dass das aufzurufende JAR wie auch die aufzurufende Klassen immer am Ende des Aufrufs erscheinen müssen.

    Was zur Hölle ist falsch? Habs natürlich nicht unter Linux ausprobiert, aber da ist es auch das gleiche Verhalten.

    Wenn du die gleichen Aufrufe wie die hier Präsentierten verwendet hast, sowieso. Berücksichtige, dass auch unter Linux keine Anführungszeichen zu setzen sind, das Ordner-Trennzeichen ein Slash und kein Backslash ist und du mehrere Angaben nicht durch das Semikolon sondern einen Doppelpunkt trennst.

    Danke für euer Mitgefühl und um hoffentlich eine Antwort,

    Hast du. Schau dir daher bitte noch die SUN-Dokus an:
    Für Windows:
      http://java.sun.com/j2se/1.5.0/docs/tooldocs/windows/java.html
      http://java.sun.com/j2se/1.5.0/docs/tooldocs/windows/classpath.html
    Für Linux:
      http://java.sun.com/j2se/1.5.0/docs/tooldocs/solaris/java.html
      http://java.sun.com/j2se/1.5.0/docs/tooldocs/solaris/classpath.html

    Beste Grüße
    Biesterfeld

    --
    Art.1: Et es wie et es
    Art.2: Et kütt wie et kütt
    Art.3: Et hätt noch immer jot jejange
    Das Kölsche Grundgesetz