Beim Laden der Eigenschaften aus einer Klasse in das Paket können com.al.common.email.templates
Sie verwenden
Properties prop = new Properties();
InputStream in = getClass().getResourceAsStream("foo.properties");
prop.load(in);
in.close();
(Fügen Sie alle erforderlichen Ausnahmebehandlungen hinzu).
Wenn Ihre Klasse nicht in diesem Paket enthalten ist, müssen Sie den InputStream etwas anders erwerben:
InputStream in =
getClass().getResourceAsStream("/com/al/common/email/templates/foo.properties");
Relative Pfade (solche ohne führendes '/') in getResource()
/ getResourceAsStream()
bedeuten, dass die Ressource relativ zu dem Verzeichnis durchsucht wird, das das Paket darstellt, in dem sich die Klasse befindet.
Mit java.lang.String.class.getResource("foo.txt")
würde nach der (nicht vorhandenen) Datei /java/lang/String/foo.txt
im Klassenpfad suchen .
Die Verwendung eines absoluten Pfads (einer, der mit '/' beginnt) bedeutet, dass das aktuelle Paket ignoriert wird.
Um die Antwort von Joachim Sauer zu ergänzen: Wenn Sie dies jemals in einem statischen Kontext tun müssen, können Sie Folgendes tun:
(Ausnahmebehandlung entfällt wie zuvor.)
quelle
resources
Ordner in einemmaven
Projekt befindetDie folgenden zwei Fälle beziehen sich auf das Laden einer Eigenschaftendatei aus einer Beispielklasse mit dem Namen
TestLoadProperties
.Fall 1: Laden der Eigenschaftendatei mit
ClassLoader
In diesem Fall muss sich die Eigenschaftendatei im
root/src
Verzeichnis befinden, damit das Laden erfolgreich ist.Fall 2: Laden der Eigenschaftendatei ohne Verwendung
ClassLoader
In diesem Fall muss sich die Eigenschaftendatei im selben Verzeichnis wie die
TestLoadProperties.class
Datei befinden, damit das Laden erfolgreich ist.Hinweis:
TestLoadProperties.java
undTestLoadProperties.class
sind zwei verschiedene Dateien. Die erstere.java
Datei befindet sich normalerweise imsrc/
Verzeichnis eines Projekts , während die letztere.class
Datei normalerweise imbin/
Verzeichnis eines Projekts gefunden wird .quelle
quelle
quelle
Angenommen , Ihre Verwendung der Eigenschaften - Klasse, über seine Last - Methode, und ich denke , Sie die Classloader verwenden getResourceAsStream den Eingangsstrom zu erhalten.
Wie geben Sie den Namen weiter, es scheint, dass es in dieser Form sein sollte:
/com/al/common/email/templates/foo.properties
quelle
Ich habe es geschafft, dieses Problem mit diesem Aufruf zu lösen
Außerdem müssen Sie Ihre Datei Whatever.properties in / src / main / resources ablegen
quelle
PropertiesUtil
?Niemand erwähnt die ähnliche, aber noch einfachere Lösung als oben, ohne sich mit dem Paket der Klasse befassen zu müssen. Angenommen, myfile.properties befindet sich im Klassenpfad.
Genießen
quelle
Verwenden Sie bitte den folgenden Code:
quelle