Slyh: Pfad der eigenen Klasse feststellen oder rel. Pfad finden

Beitrag lesen

Hallo,

Aber wie schon gesagt darauf achten, daß es sich nicht (mehr) um eine Datei im Filesystem handeln muß - wenn das ganze als Jar im CLASSPATH liegt. Das ist bei Java ja durchaus üblich.

Ja, das stimmt prinzipiell schon, da dann (evtl.) nur die JAR-Datei im
Classpath steht, nicht aber das Verzeichnis, in dem sich die JAR-Datei
befindet.

Andererseits hat man in einem solchen Fall dann bei Konfigurations-
dateien ohnehin nur die Möglichkeit, die Datei an einer zentralen
Stelle abzulegen, da sich die JAR-Datei nachträglich nicht mehr
(sinnvoll) ändern läßt.

Natürlich läßt sich (etwas komplizierter) aber auch der Pfad der
JAR-Datei ermitteln, in der sich eine Ressource befindet.
Man muß letztendlich nur überprüfen, ob es sich beim Protokoll der
zurückgegebenen URL um "jar" handelt. In diesem Fall schneidet man die
ersten 4 Zeichen ("jar:") und alles ab dem Ausrufezeichen ("!") der
URL ab, und erhält damit die URL zur JAR-Datei.

Eine JAR-URL sieht z.B. so aus:
  jar:file:/c:/mein/pfad/meinJar.jar!/pfad/dateiImJar.cfg

Daraus wird:
  file:/c:/mein/pfad/meinJar.jar

Damit hat man jetzt zum einen den Pfad zur JAR-Datei, kann zum anderen
aber auch einzelne Dateien selektiv aus der JAR-Datei laden, indem
man den Pfad der gewünschten Datei nach dem Ausrufezeichen wieder
anhängt.
(Natürlich ist dann -- wie gesagt -- nur lesender Zugriff sinnvoll.)

Gruß
Slyh