Bild in executable JAR File mitgeben

Carcharoth

Bekanntes Mitglied
Hallo

Ich habe mir ein einfaches Fenster gebaut und will dort ein Bild anzeigen. Ich habe das Bild in einem Ordner im Projekt gespeichert. Funktioniert in Eclipse wunderbar.

Wenn ich das Projekt als executable JAR-File exportiere, fehlt das Bild.
Wie kann ich sicherstellen, dass das Bild mitgeht ?

Danke für ein Tipp
Gruss
 
Das Bild muss als Ressource mit im Jar landen. Evtl. ist das schon der Fall -> Einfach mal in der jar Datei nachsehen.

Dann lädt man Ressourcen über den Classloader und nicht über die direkte Files. Also getResourceAsStream um einen Stream zu bekommen oder getResource für eine URL zu der Datei.

Das einfach einmal in Kurzform.
 
Danke.

Ich habe folgendes rausgefunden: wenn ich ein normales JAR File mache, ist das Bild miteingepackt. Wenn ich ein executable JAR File exportiere, kommt es nicht mit. Leider finde ich keine Option um Eclipse zu sagen, dass das Bild mit soll.

Projekt.JPG

Im Programm hole ich mir das Bild dann mit (funktioniert einwandfrei):
Java:
BufferedImage image = ImageIO.read(new File("rsc/Hasenkaninchen.jpg"));

Gruss
 
Du musst das Verzeichnis mit den Ressourcen auch als Source Ordner markieren/hinzufügen.
Derzeit ist es ein normaler Ordner, der vom Build Prozess eigentlich gar nicht berücksichtigt werden dürfte.
 
Desweiteren lade die Resource nicht per direkter File System API, sondern per ClassLoader aus dem Classpath.
Google: "java how to load resource from classpath"
 
Danke. Ich konnte es nun für mich lösen.

Die Ordner mit den Bilder (alle, auch Unterordner) müssen (in Eclipse) mit Rechtklick / Build Path / Use as Source Folder definiert werden.

Dann:

Java:
public class ImageLoader {
    public BufferedImage image;

    public ImageLoader() {
        try {
            image = ImageIO.read(getClass().getResource("/Kaninchen.jpg“));
        }
        catch (IOException e) {
            e.printStackTrace();
        }
    }
}

Speziell dabei: die Bilder sind mit "/Name_des_Bildes" anzusprechen, ohne Angabe des Pfades und des Ordners.

Gruss
 

Zurück
Oben