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);
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
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.
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.
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.
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
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
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.
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