Sie sind hier:  Home > Forum
 
Zurück   dsl-user.de Board - DSL - Hilfe - DSL einrichten > Computer und WWW > Software
Benutzername
Kennwort

Software Installation, Einrichtung, Probleme, Bezugsquellen

Antwort
 
LinkBack Themen-Optionen Ansicht
  #1 (permalink)  
Alt 23.02.2008, 10:53
Benutzerbild von Quidoff
wie auch immer
 
Registriert seit: 03.04.2004
Ort: Jossgrund
Alter: 23
Beiträge: 1.016
Question [Java] Pfadangaben von Resourcen in jar Dateien

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.
Mit Zitat antworten
Sponsored Links
  #2 (permalink)  
Alt 23.02.2008, 17:11
Benutzerbild von Quidoff
wie auch immer
 
Registriert seit: 03.04.2004
Ort: Jossgrund
Alter: 23
Beiträge: 1.016
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)
Mit Zitat antworten
  #3 (permalink)  
Alt 23.02.2008, 22:34
Benutzerbild von Quidoff
wie auch immer
 
Registriert seit: 03.04.2004
Ort: Jossgrund
Alter: 23
Beiträge: 1.016
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.
Mit Zitat antworten
  #4 (permalink)  
Alt 24.02.2008, 01:35
Benutzerbild von Quidoff
wie auch immer
 
Registriert seit: 03.04.2004
Ort: Jossgrund
Alter: 23
Beiträge: 1.016
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();
	}
Mit Zitat antworten
Sponsored Links
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an



Alle Zeitangaben in WEZ +1. Es ist jetzt 11:54 Uhr.


Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.3.0
© 2002-2012 - www.dsl-user.de -