In einem Projekt hatte ich das Problem, das nach dem Export meines Programmes von Eclipse zur einem lauffähiger JAR-Datei die Bilder nicht mehr angezeigt wurden ohne das ich eine Fehlermeldung kam. Wenn die Bilder von Eclipse verwendet werden, dann werden diese direkt geladen, dies ist aber von einer JAR-Datei nicht möglich, so dass es zu Problemen kommt.
Im Internet habe ich verschiedene Lösungen gefunden, welche alle nicht funktioniert haben. Ich muss Images und ImagesIcon von einer JAR-Datei laden können. Eine JAR-Datei ist nichts weiter als eine ZIP Datei (gepackter Ordner).
JAR Bilder einbinden
Ich habe mir eine Helferklasse geschrieben, welche die Bilddateien aus einem Ressourcen-Order („res“) oder dem Sourcen („src“) lädt.

Wie man sehen kann, liegt das Icon für das JFrame direkt im Sourcen Ordner von meinem Eclipse-Projekt.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
import java.awt.Image; import javax.swing.ImageIcon; /** * * @author Krone alias ST-Page.de * */ public class ImageHelper { /** * Hier wird ein Bild aus einer JAR Datei geladen und verarbeitet. * * @param fileName * {@link String} mit dem Dateinamen * @return {@link Image} */ public static Image loadImage(String fileName) { return new ImageIcon(ImageHelper.class.getResource(fileName)) .getImage(); } /** * Hier wird ein Bild aus einer JAR Datei geladen und verarbeitet. * * @param fileName * {@link String} mit dem Dateinamen * @return {@link ImageIcon} */ public static ImageIcon loadIcon(String fileName) { return new ImageIcon(ImageHelper.class.getResource(fileName)); } } |
Die Dateien werden durch dem Helper statisch aus der JAR Datei geladen und verarbeitet. Hierzu muss man nur ein “ / “ (Schrägstrich) vor dem Dateinamen schreiben und schon kann man im Eclipse und dem Exportieren JAR-File die Bilder wieder sehen. Die Funktion ImageHelper.loadImage(Dateiname) wird von dem JFrame verwendet.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
import javax.swing.JFrame; /** * @author Krone alias ST-Page.de * */ public class Window extends JFrame { private static final long serialVersionUID = 5259700796854880162L; public Window() { setTitle("Fenster mit Icon"); setIconImage(ImageHelper.loadImage("/Icon.png")); setSize(300, 200); setVisible(true); } /** * @param args */ public static void main(String[] args) { new Window(); } } |
In dem folgenden Link werden verschiedene Möglichkeiten aufgezeigt, wie man Bilder in sein JAVA Programm einbinden kann – WIKI Byte Welt.