Java: application.properties ohne Spring

Wer, bsplw. aus Analogiegründen, seine Konfiguration in eine application.properties aus lagern will, selbst wenn dieses projekt kein Spring-Projekt ist, der kann Apache Commons Configuration verwenden (via, Achtung, erfordert commons-beanutils):

mit:

 

Liferay: Portlet Lokalisierung [UPDATE]

Laut Liferay-Wiki legt man im Classpath (dort ist es explizit ein Package …/com/my/portlets/p1/…) eine Datei “Language.properties”, plus für jede “foreign language” (=Locale) ein “Language_*.properties” (mit *=locale). Das kann ich so nicht bestätigen: Meine Dateien müssen direkt in classes liegen, also ohne Package. Andernfalls bekomme ich ein

java.util.MissingResourceException: Can’t find bundle for base name Language, locale de_DE

Auf Dateien direkt in classes konnte ich per

zugreifen. Groß-/Kleinschreibung oder der ClassLoader waren bei mir nicht das Problem. Vermutlich muss ich beim Laden das Package mit angeben… allerdings sagt das Wiki das so nicht, und ich bin gerade zu faul 🙂

Achtung: Prinzipiell gibt es eine Fallback-Datei, d.h. wenn ich eine Language.properties und eine Language_de.properties habe, ist Language.properties der Fallback. Aber: Der Fallback wird auf Basis des Locale-Defaults ausgewählt! Sprich: Für Language.properties und Language_de.properties ist auf deutschen Rechnern Language_de.properties der Fallback! Das zu vermeiden, bzw. das auf allen Rechnern einheitlich zu haben, schafft man mit einem

Interessanterweise muss ich die Language.properties auch nicht in der portlet.xml angeben!? Das Wiki spricht von <supported-locale> und <resource-bundle>; bei mir geht es ohne. Vielleicht mache ich hier einfach noch was falsch. Anyway, kurz zum Aufbau der portlet.xml: Wer einen

14:05:30,735 ERROR [PortletLocalServiceImpl:704] com.liferay.portal.kernel.xml.DocumentException: Error on line 12 of document : cvc-complex-type.2.4.a: Invalid content was found starting with element ‘supported-locale’. One of ‘{…}’ is expected.

bekommt, der möge auf die Reihenfolge der Knoten achten – so einfach kann’s manchmal sein 🙂 Zum Beispiel muss <supported-locale> vor <resource-bundle> deklariert werden. Für mich funktioniert die Reihenfolge