Anzeige:
Ergebnis 1 bis 4 von 4

Thema: ResourceBundle - MissingResourceException

  1. #1
    Registrierter Benutzer
    Registriert seit
    15.07.2005
    Beiträge
    52

    ResourceBundle - MissingResourceException

    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.

    Code:
    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.throwMissingResourceException(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:

    Code:
    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:
    Code:
    \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.

  2. #2
    Registrierter Benutzer
    Registriert seit
    15.07.2005
    Beiträge
    52
    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:

    Code:
    \root
     - Main.jar
     - start.bat
     - messages_de.properties
     - messages.properties
     -\lib
       - Jar Libraries
    Dafür habe ich dann natürlich die folgende Zeile
    Code:
    private static final String BUNDLE_NAME = "languages\\messages";
    in diese umgeändert:
    Code:
    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.

  3. #3
    Registrierter Benutzer Avatar von BlueJay
    Registriert seit
    27.08.2004
    Beiträge
    825
    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.
    Geändert von BlueJay (31-12-2007 um 08:38 Uhr)
    Eigentlich ganz einfach, wenn man's weiss!

  4. #4
    Registrierter Benutzer
    Registriert seit
    15.07.2005
    Beiträge
    52
    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!

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •