Properties lesen

Choe

Grünschnabel
Hi Leute,

hab ein Programm, dass aus einer .properties file lesen soll. Funktioniert im Eclipse einwandfrei, jedoch wenn ich das Programm in eine .jar Datei verwandle, reagiert es auf nichts (was sehr wahrscheinlich darauf zurückzuführen ist, dass die Pfadangabe für die .properties Datei nicht stimmt). Als Pfadangabe verwende ich nur
FileInputStream in = new FileInputStream("constraint_checker.properties");
wobei ich mir dachte, dass das programm dann einfach im ordner der .jar Datei nach den Properties sucht. Leider tut es dies anscheinend nicht. Wie kann ich also meinem Programm sagen, es soll einfach im selbigen Ordner nach constraint_checker.properties suchen?

Liebe Grüße
 
Moin,

wenn Deine properties-Datei in einem Jar liegt, musst Du die Datei folgendermaßen aufrufen:
Java:
FileInputStream in = new FileInputStream(getClass().getResourceAsStream("constraint_checker.properties"));

Hm ... da gibt's wohl mehrere Möglichkeiten merke ich grad:
Java:
FileInputStream in = new FileInputStream(DeineKlasse.class.getResourceAsStream("constraint_checker.properties"));

Gruß,
Xan
 
Zuletzt bearbeitet:
hi, danke für deine hilfe, jedoch kann ich keinen FileInputStream mit dem parameter InputStream erstellen sagt mir mein eclipse :S

wenn ich den InputStream jedoch zu einem string mache mit .toSring() gibt mir der compiler eine nullpointerexception :(
 
Moin,

oh ja, natürlich kann kein Stream auf den FileInputStream angewendet werden.
Dummer Fehler, hätte den Compiler zur Hilfe nehmen sollen.

Versuch's mal so:
Java:
FileInputStream in = (FileInputStream) getClass().getResourceAsStream("constraint_checker.properties");

Wenn das auch nicht geht, müsste man sich nochmal tiefgründiger mit den Streams befassen :rolleyes:

Gruß,
Xan
 
Du benötigst du keinen FileInputStream und du musst da auch nichts selber parsen. Das geht mit der java.util.Properties Klasse wesentlich einfacher.

Java:
package de.tutorials.broher.propreader;

import java.util.Properties;

public class PropReader {
	public static void main(String[] args) {
		Properties props = new Properties();

		props.load(PropReader.class.getResourceAsStream("sample.properties"));

		String prop1 = props.get("prop1");
		// gibt "wert 1" aus
		System.out.println(prop1);

		 // es existiert kein key namens "prop3"
		String prop3 = props.get("prop3", "default");
		 // gibt "default" aus
		System.out.println(prop3);

		// gibt eine Auflistung aller in der Properties 
		// existierenden Schlüssel-Wert Paare zurück.
		props.list(System.out);
	}
}

Code:
# sample.properties
prop1 = wert 1
prop2 = wert 2
 
Zurück