Jar Export Bilddateien

Hallo zusammen,

Ich habe eine Frage bezüglich Java und Eclipse:
Ich hab ein Programm geschrieben das Bilder enthält und das mit Eclipse exportiert. Doch in der exportierten
Jar File sind die Bilder nicht vorhanden. Ich hab auch schon gegoogelt was man machen kann aber nichts hat
funktioniert. Hier mein Code zum einlesen der Bilder:

Image hintergrund = Toolkit.getDefaultToolkit().getImage("img/Hintergrund.gif");
g.drawImage(hintergrund, x, y, null);

Versuche mal ein

Image bild=	 new ImageIcon(  Main.class.getResource(pathInJar) ).getImage();
	    ```

Main ist dann z.B. die statische Startklasse in der die public   static void main(String[] args) 
is

Hast du in die Jar mal hinein gesehen, ob die Bilder nicht da sind, oder was gibt dir die Sicherheit?

Zum Laden von Bildern aus Jar-Dateien: http://wiki.byte-welt.net/wiki/Grafikdateien_laden_und_anzeigen

Danke für die Antworten,
@jowy Hat Leider nicht funtioniert.
@L-ectron-X Das ist ja das Problem. Die Bilder sind nicht in der jar File. Ich habs schon probiert sie zu entpacken, die Bilder rein zu tun und sie dann wieder zu packen. Aber dann lies sich die jar File nicht mehr öffnen.

Was hast du für eine IDE?

Eclipse

In welchem Ordner sind die Bilder denn? Sind es auch Kopien und nicht nur links?
Vllt. Musst du die Bilder auch im Exportieten Dialog explit anhaken bzw. Den ordner.

Grüße

Jetzt sind die Bilder zwar in der jar File aber sie werden nicht gelesen. Hab auch schon die Möglichkeiten hier http://wiki.byte-welt.net/wiki/Grafi...n_und_anzeigen probiert. Kann mir bitte jemand helfen? Am besten mit einem Code Bsp.

Och komm schon, da gibts genügend Beispielcode.
Und da steht auch, wann du welche Variante bevorzugen solltest.

Die hab ich auch schon alle passenden probiert. Aber bei den meisten kommt eine NullPointerException.
Diese beiden Ordner sind in der jar:
img -> Dort sind die Bilder.
paket -> Dort sind die .class und die .java Dateien
META-INF

Dann sollte es

Image image = ImageIO.read(<Klasse>.getResource("/img/Hintergrund.gif"));

tun.

Image image = ImageIO.read(.getResource("/img/Hintergrund.gif"));
Er kennt die Funktion getResource nicht.

Sorry…
.class.getResource ^^

Jetzt zeigt er einen Fehler an aber keine Lösung und auch nicht was Falsch ist.

Hmmz,

versuche doch mal die Fehlermeldung wenigstens mit zu posten… könnte helfen ?

ansonsten wie groggy oder ich bereits schrieben… schau dass die Pfadangabe passt!

Unhandled exception type IOException

mach mal ein try/catch - block drum:

guggst du hier GAlileo openbook, Java ist auch eine Insel

Edit:
btw. da Du ja Anfänger zu sein scheinst, solltest Du ggf. öfter dieses Buch konsultieren. Aber auch Deine IDE (Eclipse) bietet Dir bei diesem Fehler Hilfestellung: am linken Rand des Code-Fensters sollte ein keines Kästchen mit rotem Kreuz stehen, wenn Du da drauf klickst sollte Eclipse Dir auch den entscheidenen Tipp geben :wink:

Das hab ich ja gemeint das er mir keine Lösung anzeigt.

Und hat nicht funktioniert mit try/catch…

Kannst du mal genau zeigen, wie die Verzeichnisse zueinander stehen?
Das ist wichtig, um den korrekten Pfad in der Anweisung zum Bilderladen angeben zu können.

Moin,

ansonsten versuche doch mal Folgendes:

        Image image = null;

        try (InputStream is = getClass().getResourceAsStream("/img/Hintergrund.gif")) {

            if (is == null)
                throw new RuntimeException("Image not found");

            image = ImageIO.read(is);

            if (image == null)
                throw new RuntimeException("Image invalid");

        } catch (final IOException e) {
            throw new RuntimeException("Resource not readable", e);

        }

        System.out.println(image);```

Abhängig von der geworfenen Exception sollte man dann sehen, woran es liegt.

(Sollte das in "static" liegen, das getClass() durch das bereits oben erwähne <Klasse>.class ersetzen.)

Viele Grüße
Fancy