PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : ResourceBundle - MissingResourceException



tybalt0125
30-12-2007, 15:02
Hallo an Alle,

ich habe ein Problem mit dem ResourceBundle. Und zwar habe ich ein Programm geschrieben und wollte das dies in mehreren Sprachen verfügbar ist. Nun habe ich die "Externalize" Funktion von Eclipse genutzt mit der die ganzen Strings, in eine Properties Datei, ausgelagert werden.
Nun funktioniert mein Programm bestens unter Eclipse. Mach ich aber ein Build per Ant, so wird die folgende Exception geworfen.


Exception in thread "main" java.lang.ExceptionInInitializerError
at client.gui.MainWindow.initComps(Unknown Source)
at client.gui.MainWindow.<init>(Unknown Source)
at client.Controller.init(Unknown Source)
at client.StartClient.main(Unknown Source)
Caused by: java.util.MissingResourceException: Can't find bundle for base name languages\messages, locale en_US
at java.util.ResourceBundle.throwMissingResourceExcep tion(Unknown Source)
at java.util.ResourceBundle.getBundleImpl(Unknown Source)
at java.util.ResourceBundle.getBundle(Unknown Source)
at shared.util.Language.<clinit>(Unknown Source)
... 4 more

Mein Klasse, welche von Eclipse erstellt wurde und die Strings zur Verfügung stellt ist die folgende:


public class Language {
private static final String BUNDLE_NAME = "languages\\messages"; //$NON-NLS-1$

private static ResourceBundle RESOURCE_BUNDLE = ResourceBundle.getBundle(BUNDLE_NAME);

private Language() {
}

public static String getString(String key) {
try {
return RESOURCE_BUNDLE.getString(key);
} catch (MissingResourceException e) {
return '!' + key + '!';
}
}
}

Vielleicht noch meine Ordnerstruktur nach dem Build:


\root
- Main.jar
- start.bat
-\lib
- Jar Libraries
- \languages
- messages.properties
- messages_de.properties


Was mache ich falsch? Ich hoffe Ihr könnt mir helfen.

Danke schonmal im voraus.

tybalt0125
30-12-2007, 18:57
Also nach ein bisschen rumprobieren, habe ich das ganze jetzt erstmal zum Laufen bekommen. Dafür habe ich die .properties Dateien in das Hauptverzeichnis getan. Die Verzeichnisstruktur sieht jetzt so aus:



\root
- Main.jar
- start.bat
- messages_de.properties
- messages.properties
-\lib
- Jar Libraries


Dafür habe ich dann natürlich die folgende Zeile

private static final String BUNDLE_NAME = "languages\\messages";
in diese umgeändert:

private static final String BUNDLE_NAME = "messages";

Ich würde jetzt allerdings gerne ein Verzeichnis "languages" haben, indem ich die properties Dateien packen kann, damit ein Anwender sich auch einfach selber "Übersetzungen" hinzufügen kann und damit das ganze übersichtlich bleibt.

Ich denke das Problem liegt irgendwie beim Classpath, bin mir aber nicht sicher und würde mich über Hilfe von euch freuen.

Danke schonmal im voraus.

BlueJay
31-12-2007, 08:28
Ich weiss nicht, was Eclipse macht (bin Edit-Frickler), aber ich finde meine Ressource-Dateien mit folgenden Pfadangaben:

/watauchimmer/nochndir

beim JAR-Tree
root/watauchimmer/nochntree

Das mit dem Doppelslash oder Backslash kenne ich für Java nicht.

so long,
BlueJay

p.s. mein "Lieblingsfehler" ist, das erste / wegzulassen. Der Mist fällt erst beim Jar-Testen auf.

tybalt0125
31-12-2007, 13:24
Ich weiss auch nicht, aber irgendwie habe ich dann mal die beiden \\ durch einen Punkt ersetzt und schon läuft es. Manchmal sieht man einfach den Wald vor lauter Bäumen nicht... :)

Danke für die Hilfe. ;)

Einen guten Rutsch an alle!