Probleme mit ResourceBundle

HuberDe

Mitglied
Hallo zusammen,

ich habe folgendes Problem: Ich möchte meine Software über die ResourceBundle Klasse internationalisieren. Benutze ich folgenden Code und lege die Message.properties im src Ordner vom Projekt ab, funktioniert das auch

Code:
bundle = ResourceBundle.getBundle("Messages");

Jetzt würde ich aber gerne die Dateien in einen Ordner "configuration", parallel zu dem "src" Ordner legen. Ich dachte mir dann eigentlich, ich könnte mit

Code:
bundle = ResourceBundle.getBundle("../configuration/Messages");

rankommen. Das geht aber nicht. Er meint er findet das bundle nicht. Wie mache ich dem compiler klar, dass er die Message files nicht in src sondern parallel dazu in configuration findet!?

Danke
 
Ich hab jetzt selbst einiges herausgefunden. Ich hab beim Anlegen des Projekts angewählt, dass er seperate Quell- und Ausgabeverzeichnisse benutzen soll. Wenn ich jetzt die Message files in einen configuration Ordner unter "bin" lege, dann komm ich ran. Allerdings muss ich jetzt auf die anderen Dateien die ich aus diesem Ordner benutze wieder über "bin/configuration..." ran. Das verstehe ich nicht. Worin liegt denn der unterschied ob ich das Java Projekt mit dieser option anlege, oder mit der, dass alle file im root Ordner liegen!?
 
Jetzt habe ich das Problem doch wieder. Ich habe mir ein JAR erstellt, in den ich nur die class Files packe. Ich kann meine SWT Anwendung auch ausführen, jedoch bekomme ich, wenn ich sie über das JAR ausführe, die Fehlermeldung:

java.util.MissingResourceException: Can't find bundle for base name configuration/Messages, locale de

Wenn ich die Anwendung über Eclipse ausführe, funktioniert es einwandfrei. Nur über das JAR will es nicht klappen. Und ich kann auch nicht herausfinden wo ich die Messages.properties hinpacken muss, damit es klappt. Hat jemand noch eine Idee?

Ein weiteres seltsames Verhalten habe ich hier jedoch auch allgemein mit dem ResourceBundle. Als ich die Messages.properties files in das richtige Verzeichnis kopiert hatte, hat es auch mit Eclipse nicht funktioniert. Erst dann, als ich das Projekt im ProjektExplorer von Eclipse refreshed habe. Kann mir das jemand erklären?

Danke
 
Kannst Du das bitte etwas genauer erläutern? Damit kann ich jetzt recht wenig anfangen.

SWT ist nicht das Problem. Es steht im Build-path in der Manifest! Aber ich komme nicht an das ResourceBundle hin. Der Rest funktioniert alles!
 
Hallo,

könntest du bitte mal deine Ordner-Struktur aufzeigen? Also auch die, die nachher im Jar-File ist.

MFG

zEriX
 
Code:
Manifest-Version: 1.0
Main-Class: paket.paket.Test
Class-Path: lib/swt.jar 
 lib/org.eclipse.osgi_3.2.0.v20060601.jar 
 lib/org.eclipse.equinox.common_3.2.0.v20060603.jar 
 lib/org.eclipse.equinox.registry_3.2.0.v20060601.jar 
 lib/org.eclipse.core.commands_3.2.0.I20060605-1400.jar 
 lib/org.eclipse.core.runtime_3.2.0.v20060603.jar 
 lib/org.eclipse.core.boot_3.1.100.v20060603.jar 
 lib/org.eclipse.core.jobs_3.2.0.v20060603.jar 
 lib/org.eclipse.jface_3.2.0.I20060605-1400.jar 
 lib/org.eclipse.jface.databinding_1.0.0.I20060605-1400.jar 
 lib/org.eclipse.jface.text_3.2.0.v20060605-1400.jar 
 lib/jaxen-core.jar 
 lib/jaxen-jdom.jar 
 lib/jdom.jar


Ordnerstruktur im workspace:

Code:
Projektordner
   bin
      images
      configuration
      paket
         paket
   lib
   src

Eigentlich hätte ich gerne folgende gehabt, da aber Eclipse die Message dateien direkt im "bin" suchst, habe ich den "configuration" (in dem sich die Message dateien befinden) auch in das "bin" verschoben:

Code:
Projektordner
   bin
      paket
         paket
   images
   configuration
   lib
   src

in meinem JAR gibt es nur die Ordner:

Code:
META-INF
paket
    paket
         ...
         ...

DANKE
 
Hast du es schon mal so versucht?
Code:
bundle = ResourceBundle.getBundle("configuration/Messages");

Ist configuration in deinem Jar-File?

MFG

zEriX
 
Hi zEriX,

ja genauso hab ich es versucht. Nein der Ordner ist nicht im JAR. Ich möchte nur den eigentlichen Code ins JAR nehmen. Der Rest soll vom Benutzer veränderbar sein.
 
Zurück