Bilder in ausführbarer Jar

Hallo liebe Java-Freunde,

ich habe ein Problem und verzweifle so langsam. Ich hoffe ihr könnt mir helfen! :)

Und zwar:
String path = "/textures/spritesheet.png";
InputStream in = Map.class.getResourceAsStream(path);
image = ImageIO.read(in);

(Soll laut vielen deutschen und englischen Foren richtig sein und funktionieren)

Also in Eclipse werden die Grafiken ohne Probleme geladen. Möchte ich die Jar starten, stellt sich heraus, dass der InputStream in = null ist.

Kann mir da bitte jemand weiter helfen?
 
Zuletzt bearbeitet:
Dein Problem lässt sich mit URL lösen :)
Einfach den Resourcepfad in die URL speichern ;)

Class URL represents a Uniform Resource Locator, a pointer to a "resource" on the World Wide Web.
Hier mal ein Beispiel:
Java:
import java.net.URL;
class BeispielURL {
    URL uBild;
    BufferedImage Bild;

    public BeispielURL() {
        doInitializations();
    }

    void doInitializations() {
        uBild = getClass().getResource("images/Bild.png");
        try {
            Bild = ImageIO.read(uBild);
        catch(IOException e) {
            System.out.println("Fehler: " + e.toString());
       }
}
Kleine Eigenheit von mir ist die URL's immer mit 'u' zu bezeichnen :)

Mfg, Zitrus
 
Zuletzt bearbeitet:
Danke für deine schnelle Antwort! :)

Eine Frage: wieso auf einmal uLuigiLaeuft? ^^

Und es geht irgendwie nicht. Ich weiß echt nicht weider. :/


public void load()
{
try
{
String path = "textures/spritesheet.png";
URL url = getClass().getResource(path);
System.out.println(url);
image = ImageIO.read(url);
}
catch (IOException e){}
}

Die URL url ist trotzdem immer null. Nicht nur wenn die die Jar ausführe sondern jetzt auch in Eclipse.

PS: Der "texture" Ordner ist bei Eclipse im "src" Ordner. In der Jar sind alle Ordner auf einer Ebene.

Bitte um Hilfe! :)
 
Zuletzt bearbeitet:
Sorry, habe den Quellcode aus meinem eigenen Programm kopiert und abgeändert^^ Hab das wohl übersehen :)

Ich denke mal du hast den Path falsch gesetzt. Setz mal das Bild nicht in nen Ordner sondern direkt in die Klasse rein und probier mal ob du dann eine NullPointerException bekommst. Falls nicht kannste es ja nochmal mit nem Ordner probieren :D

Ahja, bitte benutze Java-Tags :)

Mfg, Zitrus
 
Zuletzt bearbeitet:
Also path ist jetzt "spritesheet.png". Das Bild ist nun dort, wo die Klasse auch ist. In Eclipse läufts. Als Jar nicht.
Hat das irgendwas mit den Build Paths zu tun? :)
 
Kannst du mir mal vielleicht einen Screenshot zeigen/schicken? (Aber nicht als Anhang sondern von ner anderen Seite hochladen :))
 
Ne, ist ja ne NullPointerException. Will ein Bild von deiner "Leiste" und sehen wo du dein Bild hingesteckt hast^^
 
Kontrolliere einmal, ob dein Bild auch wirklich im Jar-File drin ist bzw. wo es liegt.
Da das Jar-File dasselbe Format hat wie eine Zip-Datei, kannst du es mit einem Komprimierprogramm öffnen. Wenn es nicht gleich funktioniert, dann benenne das *.jar File in eine *.zip Datei um.
 
einfache Methode schreiben....
Java:
private BufferedImage getImg(String nameOfPic) { // zB. "bilder/nameDesBildes.png"
    try {
           BufferedImage img = ImageIO.read(/*KLASSENNAME*/.class.getClassLoader()
                  .getResourceAsStream(nameOfPic)); 
          return img;
    } catch (IOException ioe) {
          JOptionPane.showMessageDialog(new Frame(),
                    "Bild/Icon ("+nameOfPic+") konnte nicht erzeugt werden");
          return null;
    }
}
struktur
Klasse
|_src
|_klasseGUI
|_bilder HIER SIND DIE BILDER

so mach ich es immer
 
Zuletzt bearbeitet:
Passende Stellenanzeigen aus deiner Region:

Oben