Ressourcen(config) laden

dusk007

Mitglied
Ich versuche Ressourcen also xml Konfigurationsdateien zu laden aber scheitere irgendwie.
Das einzige was bisher notdürftig funktioniert ist folgendes.
Code:
ClassLoader loader = ClassLoader.getSystemClassLoader();
			InputStream is = loader.getResourceAsStream("resources/settings.xml");
			settingsvar.loadFromXML(is);
Dies funktioniert nur wenn ich die xml in ein package der selben jar packe.
Anders hab ichs bisher nicht hinbekommen aber eigentlich muss es da ja eine Reihe von Möglichkeiten geben.

Ich möchte eigentlich das die xml nicht einmal in der jar mit verpackt ist sondern irgendwo im Hauptverzeichnis einer Applikation liegt (in einem Ordner idealer weise) die nur diese Jar nutzt.
Also die jar XY braucht die xml.
Die Applikation A nutzt die Jar XY.

Wie stelle ich das an?
Tutorials zu dem Thema im Web bringen mich irgendwie nicht weiter es scheint nie zu klappen. Kann aber doch wohl nicht so schwierig sein denke ich mir.

PS: Ich nutze Eclipse und eigentlich sind in der Hierarchie noch 2 weiter jars dazwischen aber ich schätze das sollte am Ende eigentlich egal sein. Die App mit der Main methode soll eben auch die config liefern und die jar XY soll sie dort finden.
 

Wildcard

Top Contributor
Ich möchte eigentlich das die xml nicht einmal in der jar mit verpackt ist sondern irgendwo im Hauptverzeichnis einer Applikation liegt (in einem Ordner idealer weise)
Also musst du über die File API laden und das Working Directory der Applikation richtig setzen.
 
G

Gast2

Gast
Wenn die Datei nicht in ner jar sein soll, dann lad die doch relativ zum
Code:
user.dir
. Ganz normal per FileReader.
 

dusk007

Mitglied
Danke.
Ist so viel einfacher.

Nur mal so aus Neugier.
String userpath =System.getProperty("user.dir")+File.separator+"config"+File.separator;
Konstruiert man so den Path OS unabhängig oder kann man sich die File.seperator mittlerweile sparen und der FileReader macht es automatisch.
Wenn ichs mit \\ ausprobier gehts nicht. Auf OSX gehts mit / natürlich. Ich frag mich nur obs unter Windows mit / auch noch gehen könnte und Java dann / einfach übersetzt.
Bei JDK 7 hätte das mittlerweile ja mal wer implementieren können.
 

KrokoDiehl

Top Contributor
Ich hatte unter Windows bisher nie Probleme mit einem / als Separator anstelle des \. Das einzig "unschöne" daran ist, dass bei zusammengesetzten Pfaden der Separator wechseln kann, sprich wenn dir "user.dir" etwas wie "C:\Programme\MeineApp" liefert und du mit / weiterarbeitest kommt etwas wie
"C:\Programme\MeineApp/config/settings.xml" heraus.
 
G

Gast2

Gast
Code:
File
kommt unter allen Systemen mit / als seperator klar. Der FileReader sollte da keine Ausnahme bilden.
 
N

nillehammer

Gast
Eine Anmerkung noch: Bastel Dir Deinen Pfad lieber relativ zu "user.home". "user.dir" zeigt auf irgendein Verzeichnis, in dem der Anwender gerade ist. Das hängt von vielen Faktoren ab (Wo ist die Anwendung installiert, wurde sie aus einer Konsole gestartet, wenn ja aus dem Verzeichnis heraus oder mit Pfadangabe...) "user.home" zeigt immer auf das User-Home. Das ist sehr viel verlässlicher. Außerdem kannst Du dann auch relativ sicher davon ausgehen, dass in dem Pfad Schreibrechte exixtieren, falls Dein Programm mal was speichern soll.
 
G

Gast2

Gast
Er möchte aber relativ zu seiner Anwendung speichern, da kommt er dann mit
Code:
user.home
nicht allzuweit. Ich würde aber auch grad so config files lieber ins
Code:
user.home
legen.
 

FArt

Top Contributor
Die Ressourcen einfach in ein Verzeichnis relativ zur Applikation legen und dieses Verzeichnis in den Klassenpfad aufnehmen. Danach über den CL Thread.currentThread().getContextClassloader() die Ressource laden.

Alternativ (wenn man das Verzeichnis nicht dem Klassenpfad hinzufügen möchte), kann man auch einen UrlClassLoader instanziieren, der das zusätzliche Verzeichnis abdeckt.
 

mvitz

Top Contributor
Einfach den Classpath der Applikation richtig setzen, dann kann man auch Dateien die sich im Filesystem befinden bequem per getResourceAsStream laden.
 

dusk007

Mitglied
Wenn ich mal dumm fragen darf wie setzt man den Classpath dann?
Ich nehme mal an es ist gemeint beim Aufruf im Terminal einfach -classpath ./configFolder
oder so ähnlich bzw. in Eclipse dasselbe bei den JVM parametern rein knallen.
Nur wenn ich die app dann irgendwo einsetzte muss ich
dass ja immer erst richtig einstellen oder versteh ich das falsch.

Oder versteh ich das falsch. Oder gibt es einen Befehl der das Dynamisch zur Laufzeit vom Code aus reinwirft.

Das mit Filereader funktioniert ja ganz passabel aber jede elegantere Lösung wäre mir grundsätzlich recht. Vor allem falls die Lösung irgendwelche anderen Vorteile noch haben sollte.
Das einzig "unschöne" daran ist, dass bei zusammengesetzten Pfaden der Separator wechseln kann, sprich wenn dir "user.dir" etwas wie "C:\Programme\MeineApp" liefert und du mit / weiterarbeitest kommt etwas wie
"C:\Programme\MeineApp/config/settings.xml" heraus.
Also bloß unschön. Das wäre mir ja egal ich will den Path nirgends ausgeben nur die Datei muss gefunden werden.
 

mvitz

Top Contributor
Entweder in der Tat durch den aufruf von
Code:
java -cp deinejar.jar;config deine.main.Klasse
oder per META-INF/MANIFEST.MF Datei in deiner JAR in der du den Classpath und die Mainclass spezifizierst und anschließend durch Doppelklick oder
Code:
java -jar deinejar.jar

In Eclipse reicht es, einen Ordner, der dein Konfigfile enthält per Rechtsklick -> Use as Source Folder einzubinden, der ist dann in Eclipse automatisch in deinem Classpath.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
M Mehrere Ressourcen in einem package ablegen Allgemeine Java-Themen 1
S Pfad zu Ressourcen Allgemeine Java-Themen 17
BRoll Ladestatus Ressourcen betrachten Allgemeine Java-Themen 5
P Textdatei aus Ressourcen laden. Allgemeine Java-Themen 8
C Threads Verbraucht eine Zeitabfrage viele Rechen-Ressourcen? Allgemeine Java-Themen 8
hdi Ressourcen dynamisch zur Laufzeit laden Allgemeine Java-Themen 15
Kr0e Verbraucht ein schlafender Thread Ressourcen ? Allgemeine Java-Themen 8
M Wie externe System-Ressourcen zwangsweise freigeben Allgemeine Java-Themen 2
S Spiel - Ressourcen Allgemeine Java-Themen 10
G emf.ressourcen Allgemeine Java-Themen 7
F [JAR] Namenskonventionen für Ressourcen Allgemeine Java-Themen 2
D Alle Ressourcen auslesen Allgemeine Java-Themen 4
L Ressourcen Java Applikation Allgemeine Java-Themen 4
K Frage zur Deklaration von Variablen und deren Ressourcen Allgemeine Java-Themen 17
G Mit Klassenlader Sound Ressourcen laden Allgemeine Java-Themen 10
G Java-Webstart-Ressourcen Allgemeine Java-Themen 2
P Woher weiß ein Programm wo seine Ressourcen sind? Allgemeine Java-Themen 4
S class path resource [config.properties}] cannot be opened because it does not exist Allgemeine Java-Themen 4
H OOP Setting(config) für Applikation sicheren? Allgemeine Java-Themen 9
C Config nach bestimmten Wertdurchsuchen. Allgemeine Java-Themen 2
MineJoke "Config" Datein wir bei neustart des Programms neu erstellt? Allgemeine Java-Themen 0
P Java Dynamic Web Project -> config File Allgemeine Java-Themen 1
R Base::Config-Fehler bei Desktop-Klasse Allgemeine Java-Themen 8
Landei Erfahrungen mit JavaConfig oder Apache Commons Config? Allgemeine Java-Themen 3
S Anonymer Logger - kann man irgendwie eine komplexere Config hinkriegen? Allgemeine Java-Themen 6
I "Config-Datei nicht gefunden" Allgemeine Java-Themen 5
O Maven ein externes jar laden ohne die Applikation neu zu kompilieren Allgemeine Java-Themen 4
F Laden von bestimmten Daten aus TAR Archiv Allgemeine Java-Themen 23
E Objekte in einen String packen und wieder laden Allgemeine Java-Themen 5
Tobero .jar Dateine aus einem Ordner laden (Java 16) Allgemeine Java-Themen 5
yakazuqi Fehler beim Laden. JDA (Java Discord API) Allgemeine Java-Themen 1
L Jar Dateien in Classpath laden ab JDK 9+ Allgemeine Java-Themen 11
C Wav-Datei aus Jar laden? Allgemeine Java-Themen 11
H Objekte speichern und laden Allgemeine Java-Themen 10
H Objekte speichern und laden Allgemeine Java-Themen 1
H Objekt speichern und laden Allgemeine Java-Themen 1
H Objekt speichern und laden Allgemeine Java-Themen 1
I Klassen aus Jar-Dateien aus anderem Ordner laden Allgemeine Java-Themen 3
F Arraylist vollständig abspeichern und laden Allgemeine Java-Themen 1
T Compiler-Fehler NoClassDefFoundError beim Laden einer Class Allgemeine Java-Themen 11
temi Java Programm aus einer DB laden und starten Allgemeine Java-Themen 2
I Laden von Informationen aus Dateien: Austauschbarkeit: 2 Dateien sinnvoll? Allgemeine Java-Themen 2
H Laden einer (Resourcendatei) aus einem Jar-File Allgemeine Java-Themen 17
B Von String zu <Objekt> ||Speichern/Laden Allgemeine Java-Themen 17
Developer_X Website HTML Code von HTTPS URL laden Allgemeine Java-Themen 0
L Seite einer Partner Website neu laden Allgemeine Java-Themen 1
RalleYTN Audiolänge einer MP3 Datei erhalten ohne diese vollständig zu laden Allgemeine Java-Themen 15
S Maven Jars dynamisch laden / Plugin-Struktur erstellen Allgemeine Java-Themen 14
X Klassen aus jar in jar Laden Allgemeine Java-Themen 1
X Mehrere booleans in Datei Speichern, Updaten und Laden Allgemeine Java-Themen 1
L Mapdaten laden Allgemeine Java-Themen 10
B Aktuellen Sourcecode aus Browser laden Allgemeine Java-Themen 43
HoloYoitsu Kann .dll nur aus Eclipse heraus laden Allgemeine Java-Themen 7
F Teil eines Bildes laden Allgemeine Java-Themen 1
L JavaFX JavafX externe FXML laden? Allgemeine Java-Themen 4
M Eine Datei im Speicher erneut laden(?) Allgemeine Java-Themen 1
D JAVA Basiertes Spiel aus dem Internet in eigenem Client laden Allgemeine Java-Themen 3
S Allgemeine parallelisierte Loesung um Daten im Hintergrund zu laden..? Allgemeine Java-Themen 6
F Java Native/Shared Library (.so) laden macht Probleme Allgemeine Java-Themen 3
V Input/Output Sound Dateien aus Jar laden Allgemeine Java-Themen 18
V Input/Output Gif Bilder Animiert aus einer Jar laden Allgemeine Java-Themen 4
V Input/Output Swing Icons in Jar Archiv laden Allgemeine Java-Themen 10
C BufferedImages in Jar laden. Allgemeine Java-Themen 1
G StackoverflowError beim laden einer FXMML Datei Allgemeine Java-Themen 1
Developer_X Input/Output Serialisiertes Objekt speichern und laden Allgemeine Java-Themen 1
J Arraylist speichern und laden? Allgemeine Java-Themen 5
S Applet in html laden; InvocationTargetException,.. nur warum ? Allgemeine Java-Themen 0
M Klassen Klasse Dynamisch laden und Konstruktor aufrufen Allgemeine Java-Themen 1
A Anderes Fenster neu laden Allgemeine Java-Themen 16
N Daten aus Jar laden Allgemeine Java-Themen 10
N Klasse via ClassLoader laden Allgemeine Java-Themen 2
antonbracke Aus Jar eine Class laden und damit arbeiten! Allgemeine Java-Themen 5
K Input/Output Daten speichern / laden Allgemeine Java-Themen 2
A Class Datei aus Verzeichnis über URLClassLoader laden Allgemeine Java-Themen 2
A mit getClassLoader Bild laden Allgemeine Java-Themen 8
S Speichern/Laden/Hinzufügen/Löschen der Array-Wörter; unerwartete Ausgabe Allgemeine Java-Themen 6
G Native Library / Fehler beim Laden der .so/.dll Datei Allgemeine Java-Themen 17
antonbracke Klassen Klassen gegenseitig laden Allgemeine Java-Themen 4
K Input/Output Im Programm instanzierte Objekte Speichern und laden Allgemeine Java-Themen 3
T Java Klassen aus externer .jar laden und ausführen Allgemeine Java-Themen 3
R Java Array speichern & laden Allgemeine Java-Themen 23
N Input/Output Bild von WebSite laden? Allgemeine Java-Themen 3
G Interface Laden der Konfiguration über Interfaces sinnvoll? Allgemeine Java-Themen 28
Z Bilder aus JAR laden Allgemeine Java-Themen 2
J Laden von JAR Files geht ohne ADMIN Rechte sehr langsam Allgemeine Java-Themen 6
S IMAGE ARRAY laden Allgemeine Java-Themen 6
J Methoden Fehler beim serialisieren und laden!? help Allgemeine Java-Themen 4
Grejak 2D-Grafik Resourcen laden Allgemeine Java-Themen 4
firefexx ResourceBundle laden Allgemeine Java-Themen 2
V Klassen in "abgeschirmten Bereich" laden? Allgemeine Java-Themen 7
I bibliotheken nur via kommandozeile laden Allgemeine Java-Themen 16
U Classpath DLLs mittels System.load() laden: Allgemeine Java-Themen 6
F Vierdimensionellen String Array speichern/laden Allgemeine Java-Themen 5
T Api in Quellcode laden Allgemeine Java-Themen 8
O Jar und Iconbild laden Allgemeine Java-Themen 19
A Problem mit Bilder laden mit sum.kern Allgemeine Java-Themen 9
F Laden von externen Bibliotheken Allgemeine Java-Themen 3
P Laden von Dateien mit und ohne JavaWebStart Allgemeine Java-Themen 3
I HTML Seite laden Allgemeine Java-Themen 6
A Klassen dynamisch aus jar-datei laden Allgemeine Java-Themen 5

Ähnliche Java Themen

Neue Themen


Oben