Erstens CLASSPATH
verursacht das Setzen der env var im Allgemeinen mehr Probleme als es löst - da nicht alle Apps den gleichen Klassenpfad benötigen / wollen und oft brechen, wenn unerwünschte oder sogar nicht benötigte Gläser im Klassenpfad enthalten sind. Eine Java-App sollte nur die Mindestanzahl an Gläsern enthalten, nicht mehr und nicht weniger.
Wenn Sie spezifisches haben, individuelle Anwendungen , die erfordern , dass der Classpath, in der Regel dann eingestellt wird , wird die Befehlszeilenoption bevorzugt: java -cp path1:path2:...
. Der Befehl für Desktopsymbole kann geändert werden, um diese Optionen einzuschließen, oder Shellskripts können geändert werden, um diese Optionen einzuschließen.
Davon abgesehen (und da es immer Ausnahmen von der Regel gibt) können Sie in Abhängigkeit von der Version von Java (dies erfordert Java 6 oder höher) angeben, dass dem Klassenpfad ein ganzes Verzeichnis von JARs hinzugefügt werden soll, indem Sie ein " *
" hinzufügen. am Ende eines Verzeichnisses; zB das Folgende:
/dir1/foo.jar:/dir2/dir3:/dir5/dir6/*:etc...
Meint:
/dir1/foo.jar
- (das einzelne Glas) wird zum Klassenpfad hinzugefügt;
/dir2/dir3
- Alle nicht-jar'd Klassen in diesem Verzeichnis werden zum Klassenpfad hinzugefügt (müssen in der richtigen Paketstruktur sein; zB com.my.Foo.class
müssen in /dir2/dir3/com/my/Foo.class
)
/dir5/dir6/*
- Alle Gläser in diesem Verzeichnis (dh /dir5/dir6/*.jar
) werden dem Klassenpfad hinzugefügt. Beachten Sie, dass " *
" dies kein Platzhalter ist (Sie können nicht f*.jar
oder nicht einmal verwenden *.jar
). Es ist ein Sonderzeichen, das angibt, dass alle Gläser hinzugefügt werden sollen.
Wenn Sie dem Klassenpfad der Anwendung ein ganzes Verzeichnis mit JAR-Dateien hinzufügen müssen, wurde die App im Allgemeinen nicht ordnungsgemäß gebündelt. Vielmehr sollte die App ein Manifest mit der Liste der Gläser haben, von denen es abhängt. Oder zumindest sollte Ihrem Klassenpfad nur ein Glas hinzugefügt werden, und dieses Glas kann die gesamte Liste der Gläser in einem Unterverzeichnis enthalten.