Bilder Laden, mit Eclipse ok, .jar nicht

dredav

Aktives Mitglied
Hallo Leute,

ich versuche mich seit Stunden an folgendem Problem:
Ich möchte ein kleines Spiel schreiben, welches ich dann als .jar Datei verbreite unter meinen Freunden, nun verwende ich Bilder, welche ich mit der Methode "gibBild();" lade, das klappt auch sowie alles. Wenn ich das ganze jedoch als .jar Datei packe und öffne werden die Bilder nur unter Linux (da programmiere ich) geladen, unter Win kommt immer eine "NullPointerException". Woran liegt das? Ich komme einfach nicht weiter.

P.S. die Bilder liegen im Package "files". In der Variable "bild" steht z.b. "figur.png"

Das ist die Methode:
Java:
	public Image gibBild () {	
		String fs = System.getProperty("file.separator");
		String pfad = "files" + fs + bild;
		
		ImageIcon icon = null;
		try {
			icon = new ImageIcon(ClassLoader.getSystemResource(pfad));
		} catch (Exception e) {}
		
    	return icon.getImage();
	}

Danke für eure Hilfe schon mal im Voraus.

Grüße
David
 
du hast in deinem jarfile keine "richtigen pfade" mehr.
Lade dein bild besser mit #getResourceAsStream()
 
Hallo,

du hast in deinem jarfile keine "richtigen pfade" mehr.
Lade dein bild besser mit #getResourceAsStream()

hmm hatte es so wie oben in der Schule gelernt...

Java:
        String fs = System.getProperty("file.separator");
        String pfad = "files" + fs + bild;
        
        Image image = null;
        try {
        	InputStream in = this.getClass().getResourceAsStream(pfad);
        	image = ImageIO.read(in);
        } catch (Exception e) {
        	e.printStackTrace();
        }

        return image;

ist das was du gemeint hast, weil ich bekomme es nicht zum laufen...

java.lang.IllegalArgumentException: input == null!

Grüße
David
 
Hast du dir die API zu dem Befehl durchgelesen? 😉
Zum einen wird der pfad durch '/' getrennt, file.seperator ist hier fehl am platz. Ist der Pfad ansonsten richtig? Wie schaut deine Verzeichnisstruktur aus?
 
Die Verzeichnisstruktur ist im Anhang.
Die Bilder sind im package files
und meines Wissens müsste auch der Pfad richtig sein, das ist ja das was ich oben schon verwundert hast, weil es ja bei Linux geht nur bei Win nicht...
Die Methode ist in eine Superklasse welche sich im package Objekte befindet


edit://
so geht es jetzt oO wieso auch immer:
Java:
		Image icon = null;
		URL url = getClass().getClassLoader().getResource("files/" + bild);
		try {
			icon = ImageIO.read(url);
		} catch (IOException e) { }
		return icon;
 

Anhänge

  • Bildschirmfoto.png
    Bildschirmfoto.png
    19,2 KB · Aufrufe: 41
Zuletzt bearbeitet:

Zurück
Oben