Podczas ładowania właściwości z klasy w pakiecie com.al.common.email.templates
możesz użyć
Properties prop = new Properties();
InputStream in = getClass().getResourceAsStream("foo.properties");
prop.load(in);
in.close();
(Dodaj całą niezbędną obsługę wyjątków).
Jeśli twojej klasy nie ma w tym pakiecie, musisz zdobyć InputStream nieco inaczej:
InputStream in =
getClass().getResourceAsStream("/com/al/common/email/templates/foo.properties");
Względne ścieżki (te bez wiodącego „/”) w getResource()
/ getResourceAsStream()
oznaczają, że zasób będzie przeszukiwany względem katalogu reprezentującego pakiet, w którym znajduje się klasa.
Użycie java.lang.String.class.getResource("foo.txt")
spowoduje wyszukanie (nieistniejącego) pliku /java/lang/String/foo.txt
w ścieżce klas.
Użycie ścieżki bezwzględnej (zaczynającej się od „/”) oznacza, że bieżący pakiet jest ignorowany.
Aby dodać do odpowiedzi Joachima Sauera, jeśli kiedykolwiek będziesz musiał to zrobić w kontekście statycznym, możesz zrobić coś takiego:
(Usunięto obsługę wyjątków, jak poprzednio).
źródło
resources
folderze wmaven
projekciePoniższe dwa przypadki dotyczą ładowania pliku właściwości z przykładowej klasy o nazwie
TestLoadProperties
.Przypadek 1: Ładowanie pliku właściwości przy użyciu
ClassLoader
W takim przypadku plik właściwości musi znajdować się w
root/src
katalogu, aby można było pomyślnie załadować.Przypadek 2: Ładowanie pliku właściwości bez użycia
ClassLoader
W takim przypadku plik właściwości musi znajdować się w tym samym katalogu, co
TestLoadProperties.class
plik, aby można było go załadować.Uwaga:
TestLoadProperties.java
iTestLoadProperties.class
są to dwa różne pliki. Pierwszy.java
plik , plik, zwykle znajduje się wsrc/
katalogu projektu , podczas gdy drugi.class
plik, zwykle znajduje się w jegobin/
katalogu.źródło
źródło
źródło
Zakładając, że używasz klasy Properties , za pośrednictwem jej metody ładowania , i myślę, że używasz ClassLoader getResourceAsStream, aby uzyskać strumień wejściowy.
Jak przekazujesz imię, wydaje się, że powinno być w tej formie:
/com/al/common/email/templates/foo.properties
źródło
Dzięki tej rozmowie udało mi się rozwiązać ten problem
Dodatkowo musisz umieścić swój plik what.properties w / src / main / resources
źródło
PropertiesUtil
?Nikt nie wspomina o podobnym, ale nawet prostszym rozwiązaniu niż powyżej, bez konieczności zajmowania się pakietem klasy. Zakładając, że myfile.properties znajduje się w ścieżce klas.
Cieszyć się
źródło
użyj poniższego kodu:
źródło