Quidoff
Lieutenant
- Registriert
- Feb. 2005
- Beiträge
- 897
Hallo,
ich wollte gerade ein Java-Programm in eine jar-Datei auslagern, habe aber das Problem, dass
dieses Programm eine Ressourcendatei laden muss (genauer gesagt eine xml-Datei), die in einem
Unterordner "data" des Stammverzeichnisses liegt.
Innerhalb des Codes wird die Datei einfach durch "data/simple.xml" geladen, wenn das Programm
aber (mit "data"-Verzeichnis) in eine jar-Datei ausgelagert wird, dann wird nach der Datei im
Verzeichnis, in dem java ausgeführt wird, gesucht. Wie kann ich den Code dahingegen ändern, dass
die Ressourcendatei innerhalb des jar-Archivs gesucht wird, falls sie sich in einer jar-Datei befindet,
oder innerhalb des Stammverzeichnisses, falls das Programm als entpackt ausgeführt wird.
Wäre schön, wenn es eine Lösung gäbe, bei denen man zwischen dieses Fällen nicht
unterscheiden muss. Das die Lösung also sowohl bei den entpackten Sourcen, als auch in einem
jar-Archiv funktioniert.
Mein zweites Problem ist, dass ich innerhalb des Programms auf Klassen zugreife, die in einem
anderen externen jar-Archiv liegen. Auf diese habe ich anscheinend keinen Zugriff mehr,
wenn ich das Programm in eine jar-Datei auslagere. Jedenfalls bekomme ich auch dann noch einen
java.lang.NoClassDefFoundError Fehler, wenn ich die externe jar-Datei per -cp an den classpath
anhänge.
ich wollte gerade ein Java-Programm in eine jar-Datei auslagern, habe aber das Problem, dass
dieses Programm eine Ressourcendatei laden muss (genauer gesagt eine xml-Datei), die in einem
Unterordner "data" des Stammverzeichnisses liegt.
Innerhalb des Codes wird die Datei einfach durch "data/simple.xml" geladen, wenn das Programm
aber (mit "data"-Verzeichnis) in eine jar-Datei ausgelagert wird, dann wird nach der Datei im
Verzeichnis, in dem java ausgeführt wird, gesucht. Wie kann ich den Code dahingegen ändern, dass
die Ressourcendatei innerhalb des jar-Archivs gesucht wird, falls sie sich in einer jar-Datei befindet,
oder innerhalb des Stammverzeichnisses, falls das Programm als entpackt ausgeführt wird.
Wäre schön, wenn es eine Lösung gäbe, bei denen man zwischen dieses Fällen nicht
unterscheiden muss. Das die Lösung also sowohl bei den entpackten Sourcen, als auch in einem
jar-Archiv funktioniert.
Mein zweites Problem ist, dass ich innerhalb des Programms auf Klassen zugreife, die in einem
anderen externen jar-Archiv liegen. Auf diese habe ich anscheinend keinen Zugriff mehr,
wenn ich das Programm in eine jar-Datei auslagere. Jedenfalls bekomme ich auch dann noch einen
java.lang.NoClassDefFoundError Fehler, wenn ich die externe jar-Datei per -cp an den classpath
anhänge.