Bilder aus anderen Ordner mit ../ordner/image2.gif richtig einbinden?

Herr_M

Erfahrenes Mitglied
Ich habe ein Problem mit Bilder im Jar Archiv, die nicht angezeigt werden können und eine NullPointerException werfen.

Folgende Situation:

Ordnerstruktur:
Code:
|---Verwaltung
          |---Klasse1.java
          |---Klasse2.java
|---Information
          |---Klasse3.java
|---Sonstiges
|---gfx
         |---Image.jpg
         |---Image2.gif


Binde ich nun in Klasse1.java das Bild mit...
Code:
jLblPic.setIcon(new ImageIcon(Klasse1.class.getResource("../gfx/Image2.gif")));
... ein, so funktioniert es in Eclipse wunderbar, aber im Jar archiv nicht mehr.

Packe ich das Image aber ins gleiche Verzeichnis wie die Klasse1.java
Code:
|---Verwaltung
          |---Klasse1.java
          |---Klasse2.java
          |---Image2.gif

und binde es mit
Code:
ImageIcon(Klasse1.class.getResource("Image2.gif")));

Gibt es keine Probleme

Also wie binde ich Bilder mit einem relativen Pfad die sich mit einem anderen Verzeichnis befinden
 
Sers!

Pack doch die Bilder in einen Ordner unterhalb von Verwaltung. Dann klappts mit der Zeile:
Code:
jLblPic.setIcon(new ImageIcon(Klasse1.class.getResource("gfx/Image2.gif")));
 
ja daran hatte ich auch schon gedacht und das funktioniert auch, nur brauch ich die Bilder auch z.B. in Klasse3.java und anderen Klassen in anderen Verzeichnissen/Packages.
Aus diesem Grund wollte ich diese Lösung vermeiden, da ich ja bei diesem Ansatz die bilder doppelt und dreifach in den einzelnen Verzeichnisen hab. Das ist nicht gerade pflegeleicht und bläht zudem das jar-File unnötig auf.
 
Moin,

versuch's mal mit diesem String als relativen Pfad:

Code:
.././gfx/Image2.jpg

Bei mir funktioniert das ohne Probleme.

Gruß.
Xan
 
Moin,

diesbezüglich arbeite ich eher mit dem Toolkit:

Code:
setIconImage(Toolkit.getDefaultToolkit().getImage(getClass().getResource("/gfx/Image2.jpg")))


Das nutzt wohl irgendwie das Hauptverzeichnis der JAR-Datei.
Jedenfalls funktioniert das für die JAR selbst als auch in Eclipse/NetBeans.
Wenn das bei Dir auch nicht klappt, gehen mir langsam die Ideen aus.

Gruß,
Xan
 
Sers!

Ansonsten alle Bilder und Zeug was verschiedene Klassen brauchen in ein extra jar packen und im manifest der anderen jar class-path eintragen.
 
Zurück