ich habe da ein kleines Problem mit dem ResourceBundle. Ich habe eine
guitext.properties und eine guitext_en.properties. Mittels folgender
Methode
möchte ich Strings aus der passenden Datei holen.
public static String getString(String key){
String cRet;
ResourceBundle myTrans;
try {
myTrans = ResourceBundle.getBundle("guitext");
cRet=myTrans.getString(key);
return cRet;
} catch (Exception ex) {
return null;
}
} //public String getString(String key)
Es wird immer eine Exception geworfen, weil er die guitext_de_DE sucht.
Soweit
ich weiß müsste er doch erstmal eine guitext_de und danach eine
guitext suchen.
Erst dann sollte doch eigentlich eine Exception geworfen werden.
Kann mir bitte jemand erklären was ich hier falsch mache? Vielen Dank
im
Vorraus.
MfG
tranquility
1. Fehler: "Voraus" nur mit einem R ;-)
2. Ich kann nur vermuten, dass deine properties files im falschen
Verzeichnis liegen. Habe das Ganze hier gerade probiert und wie zu
erwarten war funzt es:
Datei <$SRC>/de/comp/lang/java/ResourceBundleDemo.java:
package de.comp.lang.java;
import java.util.ResourceBundle;
public class ResourceBundleDemo {
public static void main(String... args) {
ResourceBundle bundle = ResourceBundle.getBundle("rbdemo");
System.out.println(bundle.getString("bundlefile"));
}
}
EOF
Datei <$SRC>/rbdemo.properties:
bundlefile=rbdemo.properties
EOF
Datei <$SRC>/rbdemo_en.properties:
bundlefile=rbdemo_en.properties
EOF
Ausgabe des Programms:
rbdemo.properties
EOO
Ausgabe wenn ich rbdemo.properties lösche:
Exception in thread "main" java.util.MissingResourceException: Can't
find bundle for base name rbdemo, locale de_DE
at
java.util.ResourceBundle.throwMissingResourceException(ResourceBundle.java:837)
at java.util.ResourceBundle.getBundleImpl(ResourceBundle.java:806)
at java.util.ResourceBundle.getBundle(ResourceBundle.java:550)
at de.comp.lang.java.ResourceBundleDemo.main(ResourceBundleDemo.java:8)
EOO
Die Fehlermeldung sagt _nicht_, dass er nach rbdemo_de_DE.properties
sucht, sondern, dass er nach "rbdemo" sucht und dabei die Locale de_DE
verwendet um (zunächst) nach sprachspezifischen Versionen zu suchen.
3. Meine Vermutung: Deine guitext.properties liegt im selben Verzeichnis
wie die Klasse, aber deine Klasse ist _nicht_ im default-Package. Richtig?
cu
> 1. Fehler: "Voraus" nur mit einem R ;-)
Das kann mal vorkommen, nicht wahr?
> 3. Meine Vermutung: Deine guitext.properties liegt im selben Verzeichnis
> wie die Klasse, aber deine Klasse ist _nicht_ im default-Package. Richtig?
Das war die Lösung. Unter Angabe der Package-Struktur funktioniert es
prima.
Danke
tranquility