|
|||||||
| Software Installation, Einrichtung, Probleme, Bezugsquellen |
![]() |
|
|
LinkBack | Themen-Optionen | Ansicht |
|
||||
|
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.
__________________
...And Justice for All ->'tallica kickz ass! ->Mein Rechenschieber ->Skype me! |
| Sponsored Links |
|
||||
|
Da ich gar keine Idee mehr habe, habe ich den Code mal hochgeladen.
Wäre nett, wenn es jemand in eine lauffähige jar-Datei packen könnte und dann hier posten könnte, wo der Fehler war und wie man ihn behebt. Glade.rar libgtkjni-4.0.so (Muss als native library des Projekts eingetragen werden) Ausführung der jar Datei dann mit: java -Djava.library.path=/usr/lib -jar Glade.jar (/usr/lib zum Pfad ändern, in dem die Datei liegt)
__________________
...And Justice for All ->'tallica kickz ass! ->Mein Rechenschieber ->Skype me! |
|
||||
|
Also es ist wohl nicht möglich einen Pfad zu einer Resource innerhalb einer jar-Datei anzugeben. Es liese sich wohl ein File Objekt erstellen, aber damit kann
der Konstruktor nicht umgehen, weshalb noch die Möglichkeit bleibt, eine lokale Kopie zu erstellen.
__________________
...And Justice for All ->'tallica kickz ass! ->Mein Rechenschieber ->Skype me! |
|
||||
|
So, wie gesagt, musste die temporäre Kopie des xml-Skripts erzeugt werden:
Code:
private void loadGUIFile() throws IOException {
f = File.createTempFile("simple", "glade");
InputStream is = this.getClass().getResourceAsStream("/data/simple.glade");
FileOutputStream os = new FileOutputStream(f);
byte by;
while ((by = (byte) is.read()) != -1) {
os.write(by);
}
f.deleteOnExit();
os.close();
}
__________________
...And Justice for All ->'tallica kickz ass! ->Mein Rechenschieber ->Skype me! |
| Sponsored Links |
![]() |
| Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1) | |
| Themen-Optionen | |
| Ansicht | |
|
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:54 Uhr.



Linear-Darstellung
