Ich teste die i18n-Funktionen von Java und habe ein Problem. Ich kann die Sprachdatei nicht laden, wenn sie nicht im Stammverzeichnis der Klasse ist. Momentan befinden sich meine Dateien im Verzeichnis /lang
.
Suchte mehrere Antworten hier in SO, legte es in ein classes
-Unterverzeichnis und lud es wie lang.Messages
, verwendete vollständiges Standort-Routing /Test/lang/Message
(test ist der Projektname), benutze nur /lang/Message
und immer noch I ' Ich bekomme das:
java.util.MissingResourceException: Can't find bundle for base name
Fehler.
Sonst noch etwas zu versuchen?
Meine Dateistruktur ist:
%Vor%
Test/lang/Messages_es.properties
Test/src/test/Main.java
Sie müssen Ihren Gebietsschema-Namen in Ihrem Eigenschaftendateinamen haben.
Benennen Sie Ihre Eigenschaftendatei in Messages_es.properties
Da Sie kein Paket deklariert haben, können sich sowohl Ihre kompilierte Klassendatei als auch die Eigenschaftendatei im selben Stammverzeichnis befinden.
BEARBEITEN als Antwort auf Kommentare:
Nehmen wir an, Sie haben diese Projektstruktur:
test\src\foo\Main.java
( foo
ist der Paketname)
test\bin\resources\Messages_es.properties
(die Eigenschaftendatei befindet sich im Ordner resources
in Ihrem Klassenpfad)
Sie können dies mit:
ausführen %Vor%Aktualisierter Quellcode:
%Vor%Wie Sie sehen, laden wir die Eigenschaftendatei mit dem Namen "resources.Messages"
Hoffe, das hilft.
Tags und Links java internationalization resourcebundle