Classpath ResourceBundle Problem bzgl. Pfade bzw. Pfade (auch in Eclipse) generell?

andreT

Aktives Mitglied
Hallo,

bis heute kämpfe ich immer wieder mit diesem ganzen Pfad Wirr-Warr :D
Beruflich ist man meist in laufenden Umgebungen unterwegs wo der Zugriff auf Resourcen schon gelöst bzw. umgesetzt ist. Nun habe ich aber aktuell ein kleines privates Projekt was ich mit Eclipse lösen will :shock:

Wie folgt: Ich habe eine kleine Sourcen-Library (lib) die ich beim Erzeugen des Projektes in den src Ordner kopiere.
Ich habe aber noch weitere Resourcen in einem Ordner (resources) die ich in das Hauptverzeichnis des Eclipse Projektes kopiere. Die Verzeichnisstruktur sieht dann so aus :

MeinProjekt
|
--settings
|
--bin
|
--resources
|
--src
| |
| --lib
|
--.classpath
|
--.project

Der Ordner resources enthält u.a. dann auch die Property Dateien die für meine Lokalisierungen notwendig sind. Leider habe ich aber das Problem daß ich nicht mit dem üblichen Weg
ResourceBundle bundle = ResourceBundle.getBundle(resourceBundleBasename,getCurrentLocale());
darauf zugreifen kann da die Files (so wie ich das sehe) nicht in meinem Classpath liegen. Was nun also tun?
Die Files z.B. auch Images sollen in resources liegen und letztendlich nicht in das jar mit einfliessen. Der Ordner resources wird dann im gleichen Verzeichnis liegen wie das jar-File.

Wie kann ich denn nun auf diesen Ordner bzgl. ResourceBundle zugreifen? Hat jemand 'n Tipp?
 
Zuletzt bearbeitet:
N

nillehammer

Gast
Ich würde die Resources auch in ein jar-File packen und nicht als Dateien auf dem Filesystem rumliegen lassen. Dann kannst Du sie mit getClass().getResourceAsStream laden. Um auch während der Entwicklungszeit (da hat man ja noch kein Jar) darauf zugreifen zu können, machst Du Deinen resources-Folder zu einem Sourcefolder in Eclipse. Und zur Ordnerstruktur, es hat sich -beeinflusst von maven- eine bestimmte Ordnerstruktur etabliert, an die Du dich auch halten solltest:
Code:
meinProjekt/
  src/
    main/ <-- Hier liegt alles, was zum laufenden Programm gehören soll.
      java/ <--Source Folder in Eclipse
      resources/ <--Source Folder in Eclipse
    test/ <-- Hier liegt alles, was automatisierten Tests dient, bspw. Unit-Tests
      java/ <--Source Folder in Eclipse
      resources/ <--Source Folder in Eclipse
    lib/ <-- Kann man machen, Build Tools arbeiten aber auch oft mit zentralen Repositories
 

andreT

Aktives Mitglied
... beeinflusst von maven- eine bestimmte Ordnerstruktur etabliert, an die Du dich auch halten solltest:
Code:
meinProjekt/
  src/
    main/ <-- Hier liegt alles, was zum laufenden Programm gehören soll.
      java/ <--Source Folder in Eclipse
      resources/ <--Source Folder in Eclipse
    test/ <-- Hier liegt alles, was automatisierten Tests dient, bspw. Unit-Tests
      java/ <--Source Folder in Eclipse
      resources/ <--Source Folder in Eclipse
    lib/ <-- Kann man machen, Build Tools arbeiten aber auch oft mit zentralen Repositories

Danke erstmal!
Hmmm ... leider kann ich (zumindest nicht alle) Resourcen in ein (extra) jar packen da die Files/Textfiles mitunter täglich manuell und von anderen non-Java Tools geändert/aktualisiert werden sollen. Mir bleibt also in diesem Fall keine andere Möglichkeit als meine Resourcen in einem parallelen Ordner zum eigentlichen jar zu parken.

Wenn es nun keine Möglichkeit gibt über den üblichen ResourceBundle-Weg bzw. via Filezugriff auf die Dateien zuzugreifen muss ich mir wohl selbst eine Lokalisierung basteln, oder?
 
N

nillehammer

Gast
andreT hat gesagt.:
Wenn es nun keine Möglichkeit gibt über den üblichen ResourceBundle-Weg bzw. via Filezugriff auf die Dateien zuzugreifen muss ich mir wohl selbst eine Lokalisierung basteln, oder?
In das JAR wandern sie auch erst bei der fertig gebauten Applikation. In der Entwicklungsumgebung liegen sie ja noch als Files vor. Dort können sie auch mit non-Java Tools von Euren Übersetzern bearbeitet werden.

Internationalisierte Texte, die bei einem fertig gebauten und installierten Programm nahezu täglich geändert werden, hören sich für mich etwas merkwürdig an. Falls Du so was brauchst, schreib doch vielleicht am besten noch etwas mehr zum Hintergrund dieser Anforderung. Da kann man dann besser Ideen entwickeln.
 

andreT

Aktives Mitglied
Die Anwendung bau ich in eigener Sache und bin daher frei/offen für alles neues/sinnvolles.

Mir wiederstrebt es irgendwie jegliche Resourcen (selbst während des Entwicklungsprozesses) innerhalb des src-Ordners zu halten. Ist das eine gängige Praxis? Ich hab bestimmt vor 10 Jahren das letzte mal 'nen Compiler geschweige denn ein Buildtool selbst/über die Console angeworfen!
Ich habe schon so einige Projekte mit WSAD/RAS (mit-)gestemmt, aber nie irgendwelche Resourcen in src-Ordnern gesehen. Wobei ich zugeben muss daß ausgelagerte Resourcen immer in weiteren Projekten zu finden waren. Aber ob die da nicht auch in den src-Ordnern lagen weiß ich aber ehrlich gesagt nicht :D

Wie macht man's denn nun? Ist deine o.a. Struktur aktuelle/up-to-date Praxis? Maven wird bei uns noch nicht eingesetzt, wir sind immer noch mit Ant & Co. unterwegs. Eine Umstellung wird angedacht. Und hier bei mir daheim mach ich das natürlich alles nur aus Eclipse heraus.
Wie auch immer, jetzt sitze ich hier daheim und kämpfe nun damit mir eine sinnvolle Struktur einfallen zu lassen die während der Entwicklung und im anschließenden Produktiven Umfeld nicht mit den Pfaden zu kämpfen hat und einigermaßen übersichtlich ist. Ich hätte z.B. auch gerne daß meine weiteren jars (log4J,netbeans,mysql-connector,...) ebenfalls in diesem resource/lib-Ordner wiederzufinden sind. Lange Rede, kurzer Sinn : Gibt es ein Patentrezept zum Auslagern sämtlicher Resourcen, die in einer produktiven Umgebung zugreifbar/austauschbar und leicht widerzufinden sind und KEINEN neuen Buildprozess bzw. Bauen eines neuen jars benötigen? Wie gesagt, die Files sollten auch von Drittanbietertools zugreifbar sein.

Wie baut man nun so eine Eier legende Wollmilchsau? :D
 
Zuletzt bearbeitet:

andreT

Aktives Mitglied
Für die interessierte/suchende Nachwelt :

Ich habe in Eclipse jetzt die Ordnerstruktur :

MeinProjekt
|
--settings
|
--bin
|
--resources
|
--src
|
--.classpath
|
--.project

Die Resourcen (Bilder, *.jar, ResourceBundle-Files, *.properties, ...) habe ich also NICHT im src Verzeichnis!

Der Zugriff auf z.B. das ResourceBundle-File meldungen erfolgt jetzt alternativ mit
Java:
PropertyResourceBundle bundle = new PropertyResourceBundle(new FileInputStream("C:/test/resources/meldungen_de.properties"));
Der Dateipfad kann mit user.dir ermittelt werden und die Locale kann natürlich mit toString() an den Dateinamen angehangen werden. So wird dann auch immer die korrekte Datei gefunden.
Auf diese Weise können also beliebige ResourceBundle-Files als (externe) Datei (und somit nicht mit relativer Pfadangabe geladen) werden. Das funktioniert dann auch problemlos im produktiven Umfeld.

Wenn ich mein *-jar exportiere, kopiere ich den Ordner resources manuell in das gleiche Zielverzeichnis und passe (vorher) die MANIFEST.MF in meinem *.jar-Archiv entsprechend an. So können auch alle notwendigen *.jars aus dem Ordner resources gefunden werden.

Weder innerhalb Eclipse noch in der produktiven Umgebung habe ich noch Probleme mit den Pfaden und die Drittanbietertools haben ebenfalls Zugriff auf die Resourcen.

Thema erledigt!
 

turtle

Top Contributor
Wenn ich mein *-jar exportiere, kopiere ich den Ordner resources manuell in das gleiche Zielverzeichnis und passe (vorher) die MANIFEST.MF in meinem *.jar-Archiv entsprechend an.

Nee, nicht wirklich, oder :autsch:

Warum nicht über den Classpath, a la getResource(String name). Das funzt in Eclipse, alles in einem JAR, oder als externe Dateien.

Das Du zum Deployen daran denken musst, neben der JAR auch noch die resources zu kopieren UND das Manifest anzupassen, halte ich doch für ein fragwürdiges Vorgehen:shock:
 

andreT

Aktives Mitglied
Nee, nicht wirklich, oder :autsch:
Doch! :bae:

Warum nicht über den Classpath, a la getResource(String name). Das funzt in Eclipse, alles in einem JAR, oder als externe Dateien.
Seit wann können externe bzw. Drittanbietertools oder sogar das eigene Programm Dateien (u.a. via JAXB Zugriff) innerhalb von jars ändern? Wohl eher nicht, oder? :autsch:

Das Du zum Deployen daran denken musst, neben der JAR auch noch die resources zu kopieren UND das Manifest anzupassen, halte ich doch für ein fragwürdiges Vorgehen:shock:
Kann ja sein das du es so für dich hälst, aber genau so ist es in diesem Fall gewollt! Das sowas manchmal notwendig/sinnvoll sein kann, wirst du sicher auch noch lernen :D

edit : Im Übrigen ist Eclipse beim Export offensichtlich zu blöde um meine MANIFEST.MF korrekt anzupassen. Daher bleibt mir hier der (einmalige!) manuelle Eingriff leider nicht erspart!
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
E ResourceBundle.getBundle() Problem Allgemeine Java-Themen 6
Ernesto95 Best Practice Localization über ResourceBundle Allgemeine Java-Themen 6
S URLClassLoader findet ResourceBundle nicht Allgemeine Java-Themen 0
L OOP Wohin mit dem ResourceBundle für Mehrsprachigkeit? Allgemeine Java-Themen 1
H ResourceBundle während Laufzeit bearbeiten Allgemeine Java-Themen 3
firefexx ResourceBundle laden Allgemeine Java-Themen 2
U Mehrsprachigkeit mit ResourceBundle Allgemeine Java-Themen 9
R ResourceBundle in Servlets verwenden Allgemeine Java-Themen 13
S ResourceBundle: Locale Datei in Jar finden Allgemeine Java-Themen 3
C Reload ResourceBundle Allgemeine Java-Themen 6
S Resourcebundle - mehrzeiligen Text erlauben Allgemeine Java-Themen 3
R ResourceBundle-Verständnisproblem Allgemeine Java-Themen 3
P Mehrsprachig programmieren ResourceBundle Allgemeine Java-Themen 6
A ResourceBundle ohne LOCALE funkt nicht. Allgemeine Java-Themen 4
G Tomcat ResourceBundle Allgemeine Java-Themen 7
L Alle Keys eines ResourceBundle Allgemeine Java-Themen 3
T ResourceBundle aus .jar auslesen > MissingResourceExcepti Allgemeine Java-Themen 4
S ResourceBundle findet Resource nicht Allgemeine Java-Themen 4
J ResourceBundle / properties-datei während der Laufzeit verän Allgemeine Java-Themen 6
krgewb Problem mit Umlauten und Eszett bei InputStream Allgemeine Java-Themen 3
Max246Sch Backtracking Problem Box Filler Allgemeine Java-Themen 6
NightVision402 VisualVM Startskript Problem Allgemeine Java-Themen 3
javaBoon86 Email Server Connection Problem Allgemeine Java-Themen 1
F Problem mit PDFBOX Library Allgemeine Java-Themen 1
A Java modul Problem Allgemeine Java-Themen 4
D Read JSON File Problem Allgemeine Java-Themen 9
urmelausdemeis Exception in thread "main" java.lang.Error: Unresolved compilation problem: Allgemeine Java-Themen 7
J Problem mit JasperReports Allgemeine Java-Themen 8
M log4j Problem mit jlink Allgemeine Java-Themen 19
8u3631984 Problem beim Mocken von Record Klassen Allgemeine Java-Themen 4
torresbig Website login Problem - Jsoup, wie bisher, klappt nicht! Allgemeine Java-Themen 31
P Selenium . getText Problem Allgemeine Java-Themen 9
A Jar zu Exe Problem Allgemeine Java-Themen 13
sserio Variablen Liste erstellt und ein Problem mit dem Index Allgemeine Java-Themen 6
S Folgendes Problem bei einem Programm Allgemeine Java-Themen 1
stormyark Problem beim Klassen erstellen Allgemeine Java-Themen 1
A Thread.sleep Problem Allgemeine Java-Themen 2
A Problem bei der Nachbarschafttest Allgemeine Java-Themen 11
Splayfer Problem: no main manifest attribute Allgemeine Java-Themen 3
G javamail Problem beim Empfangen von Nachrichten Allgemeine Java-Themen 3
Splayfer JDA Problem mit MessageCounter Allgemeine Java-Themen 0
Splayfer Problem mit BufferedWriter Allgemeine Java-Themen 3
F Streams als Alternative für dieses Problem ? Allgemeine Java-Themen 15
N Maven Problem mit Datenbanktreiber (H2 Embedded) Allgemeine Java-Themen 12
T Problem beim Umwandeln in eine Jar-Datei Allgemeine Java-Themen 3
B Einfach Elemente zweier Arraylisten kreuz und quer vergleichen, min und max Problem? Allgemeine Java-Themen 16
C ArrayList Problem Allgemeine Java-Themen 3
kev34 nim-Spiel problem Allgemeine Java-Themen 1
D Firebase retrieve data Problem, Child Element wird nicht angesprochen Allgemeine Java-Themen 0
G Welches Problem besteht bei den Typparametern? Allgemeine Java-Themen 5
temi Problem mit Aufrufreihenfolge bei Vererbung Allgemeine Java-Themen 3
Sumo_ow "ArrayIndexOutofBoundsException: 2" Array Problem Allgemeine Java-Themen 6
T PIM basierend auf netbeans via AnyDesk Problem Allgemeine Java-Themen 3
xGh0st2014 Problem mit Java Array Allgemeine Java-Themen 1
Kirby.exe Verständnis Problem bei Rucksack Problem Allgemeine Java-Themen 6
B Eclipse-Lombok-Problem Allgemeine Java-Themen 19
I Input/Output ObjectOutputStream - Problem Allgemeine Java-Themen 7
1 Multiple Choice Knapsack- Problem Allgemeine Java-Themen 2
kodela Problem mit strukturiertem Array Allgemeine Java-Themen 18
E Problem mit Gridlayout und Button Allgemeine Java-Themen 2
A Array Problem Allgemeine Java-Themen 8
bueseb84 Problem Allgemeine Java-Themen 0
S Problem mit Arrays Allgemeine Java-Themen 1
D Nullpointer Exception Problem Allgemeine Java-Themen 5
B Problem mit meinen Klassen Allgemeine Java-Themen 6
A HashMap Methode "get()"-Problem Allgemeine Java-Themen 28
J Problem beim Umstellen auf Java jdk 13 Allgemeine Java-Themen 3
J Problem bei Install java 13 Allgemeine Java-Themen 3
X Profitable Reise Problem Allgemeine Java-Themen 32
A Problem beim öffnen von Java-Installern Allgemeine Java-Themen 1
Dann07 Problem mit JavaMail API Allgemeine Java-Themen 26
J Problem beim Generischen Klassen und Interfaces Allgemeine Java-Themen 2
L Klassen Algorithmus für das folgende Problem entwickeln? Allgemeine Java-Themen 30
J Clear-Problem Allgemeine Java-Themen 10
B Problem zu einem Java Projekt Allgemeine Java-Themen 6
S JFileChooser Problem Allgemeine Java-Themen 4
M Traveling Salesman - MST Heuristik Problem Allgemeine Java-Themen 4
J Traveling Salesman Problem Allgemeine Java-Themen 14
E Java Editor Problem mit 2er Exceptions Allgemeine Java-Themen 12
C code oder Bibliotheken für 2-Center Problem Allgemeine Java-Themen 4
M Salesman Problem - Bruteforce Algorithmus Allgemeine Java-Themen 23
S Methoden Problem mit NullPointerException Allgemeine Java-Themen 9
Javafan02 Problem mit if-clause Allgemeine Java-Themen 17
J Lombok Problem mit Konstruktoren bei Verberbung Allgemeine Java-Themen 1
kodela Event Handling Problem mit der Alt-Taste Allgemeine Java-Themen 16
W Threads Problem Allgemeine Java-Themen 15
D (Verständnis-)Problem mit Unterklasse Allgemeine Java-Themen 4
S Problem mit Generic bei unmodifiableCollection Allgemeine Java-Themen 4
S jserialcomm Problem Allgemeine Java-Themen 1
Flynn Thread-Problem... Allgemeine Java-Themen 2
J Generische Interface - Problem Allgemeine Java-Themen 3
G Problem beim GUI Allgemeine Java-Themen 9
L Applet Problem "security: Trusted libraries list file not found" ? Allgemeine Java-Themen 7
A OOP Problem beim Berechnen der größten Fläche eines Ringes Allgemeine Java-Themen 19
T Problem mit externen Datenbankzugriff über SSH Tunnel Allgemeine Java-Themen 4
F Problem beim Einlesen einer Textdatei Allgemeine Java-Themen 12
S Java OpenOffice Problem mit Windows-Benutzerwechsel Allgemeine Java-Themen 19
K Threads RAM Problem Allgemeine Java-Themen 20
P Operatoren Problem mit Zähler in recursiver Schleife Allgemeine Java-Themen 2
C Int Problem Allgemeine Java-Themen 8

Ähnliche Java Themen

Neue Themen


Oben