.jar findet ImageIcon nicht

Q-Dog

Mitglied
Guten Morgen,

ich habe folgendes Problem und zwar findet meine .jar Datei die ImageIcons nicht.
In Eclipse funktioniert allerdings alles einwandfrei.

Ich binde die ImageIcons wie folgt ein:
Java:
ImageIcon hintergrundIcon = new ImageIcon(getClass().getResource("../../gfx/gui/hauptmenu/spielmenu_hintergrund.png"));

Ich hab jetzt schon ne Weile nach Lösungen gesucht aber nichts gefunden.
Ich vermute, dass .jar mit dem "../" nicht klarkommt, wüsste aber nicht wie ich dies umgehen könnte.

Ich hoffe ihr könnt mir helfen.


Liebe Grüße,
Q-Dog
 

L-ectron-X

Gesperrter Benutzer
Das sollte kein Problem sein. Zeig mal bitte die Verzeichnisstruktur in deiner Jar-Datei.
Interessant wäre auch die Fehlermeldung, die der Interpreter ausgibt, wenn du die Jar-Datei mal mit
Code:
java -jar DeinJar.jar
startest.
 

Q-Dog

Mitglied
Hallo L-ectron-X, vielen Dank schonmal für deine Antwort.

Die Fehlermeldung ist:
Java:
java -jar Texas.jar
Exception in thread "main" java.lang.NullPointerException
	at javax.swing.ImageIcon.<init>(ImageIcon.java:167)
	at spiel.menue.Hauptmenue.<init>(Hauptmenue.java:32)
	at Texas_Codeem.main(Texas_Codeem.java:20)

Wie gesagt er findet die Bilder nicht.


Die Verzeichnisstruktur ist die Folgende
Java:
src 
 |- main (Klasse mit Main-Methode)
 |- spiel
     |- ablauf
     |- auswertung
     |- menu (hier ist das Hauptmenue von oben)
 |- gfx
     |- gui
         |- hauptmenu (Bilder)
         |- karten (Bilder)
         |- tisch (Bilder)

Sprich aus dem menu muss man 2 Ordner hoch, dann in gfx/gui/hauptmenu/*.png

In Eclipse selbst funktionierts ja auch.

Gruß Q-Dog
 
G

Guest2

Gast
Moin,

versuch mal:

Java:
final ImageIcon hintergrundIcon = new ImageIcon(ImageIO.read(getClass().getClassLoader().getResourceAsStream("gfx/gui/hauptmenu/spielmenu_hintergrund.png")));

Gruß,
Fancy
 

Q-Dog

Mitglied
na in eclipse isses rot unterkringelt (obwohl ich ImageIO importiert habe) und wenn ich auf den Hinweis klicke "Nothing to suggest"
 
G

Guest2

Gast
Hm, das ImageIO.read() kann ne IOException werfen. Dazu sollte Eclipse Dir aber Lösungen zeigen können. Wenn es daran liegt, entweder per throws IOException weiterreichen, oder:

Java:
        ImageIcon hintergrundIcon;
        
        try {
            
            hintergrundIcon = new ImageIcon(ImageIO.read(getClass().getClassLoader().getResourceAsStream("gfx/gui/hauptmenu/spielmenu_hintergrund.png")));
            
        } catch (IOException e) {
            
            e.printStackTrace();
            
        }

Ansonsten zeig doch mal die komplette Methode, in der das geladen wird.

Gruß,
Fancy
 

Q-Dog

Mitglied
Ah stimmt lag an der Exception, danke :)

Allerdings löst es das Problem nicht, das Bild wird nun gar nicht angezeigt, weder in Eclipse noch in der .jar.
 
G

Guest2

Gast
Wenn es nicht angezeigt wird, sollte vorher die Exception fliegen. Und die gibt den Stacktrace aus. Was wird den da ausgegeben?

Und bist Du sicher, dass die Pfade stimmen? (Beim Weg über den ClassLoader kommen keine ../../ davor)

Gruß,
Fancy
 

Q-Dog

Mitglied
Ne also ne Exception fliegt komischerweise nicht.

Das Bild wird gefunden, nur irgendwie nicht angezeigt (hab sonst nichts verändert).
Und bei der Pfadangabe hab ich das "../../" weggelassen.
 

L-ectron-X

Gesperrter Benutzer
Wenn ich nichts übersehen habe, sollte es so funktionieren:
Java:
ImageIcon hintergrundIcon = new ImageIcon(getClass().getResource("../gfx/gui/hauptmenu/spielmenu_hintergrund.png"));
oder so:
Java:
ImageIcon hintergrundIcon = new ImageIcon(Hauptmenue.class.getResource("../gfx/gui/hauptmenu/spielmenu_hintergrund.png"));
 

slawaweis

Bekanntes Mitglied
eine Klasse hat "Package + Name" als vollständigen Namen. So ist z.B. "org.xyz.MyClass" der Namen der Klasse und nicht "MyClass". Wenn man also relative Grafiken laden will, müssen diese relativ zum Klassenamen liegen, was in diesem Fall das wäre:

Java:
ImageIcon hintergrundIcon = new ImageIcon(getClass().getResource("/gfx/gui/hauptmenu/spielmenu_hintergrund.png"));

Alternativ würde auch das gehen:

Java:
ImageIcon hintergrundIcon = new ImageIcon(getClass().getResource("gfx/gui/hauptmenu/spielmenu_hintergrund.png"));

Slawa
 

Q-Dog

Mitglied
eine Klasse hat "Package + Name" als vollständigen Namen. So ist z.B. "org.xyz.MyClass" der Namen der Klasse und nicht "MyClass". Wenn man also relative Grafiken laden will, müssen diese relativ zum Klassenamen liegen, was in diesem Fall das wäre:

Java:
ImageIcon hintergrundIcon = new ImageIcon(getClass().getResource("/gfx/gui/hauptmenu/spielmenu_hintergrund.png"));

Alternativ würde auch das gehen:

Java:
ImageIcon hintergrundIcon = new ImageIcon(getClass().getResource("gfx/gui/hauptmenu/spielmenu_hintergrund.png"));

Slawa

Ja genau so hab ich nun auch alles umgebaut.
Sprich den gfx Ordner aufgesplittet und in Unterverzeichnisse der Packages gepackt.

@Guest2
Mom ich schau mal ^^

//edit
Ja tatsächlich, das funktioniert!
Das ist ja mehr als komisch.

Naja hab das Projekt nun wie oben beschrieben einfach umgebaut.

Nochmals vielen Dank euch allen für eure Mühe.
 
Zuletzt bearbeitet:

coree

Mitglied
Da ich für das gleiche Problem keinen neuen Thread öffnen will, schreib ich das einfach mal hiermit hinzu.

ich hab jetzt schon den ganzen Tag gesucht und bisher keine funktionierende Lösung gefunden. Auch hab ich
Java:
        try {

            ImageIcon openIcon = new ImageIcon(ImageIO.read(getClass().getClassLoader().getResourceAsStream("../images/tree_open.jpg")));
            ImageIcon closedIcon = new ImageIcon(ImageIO.read(getClass().getClassLoader().getResourceAsStream("../images/tree_close.jpg")));
            ImageIcon leafIcon = new ImageIcon(ImageIO.read(getClass().getClassLoader().getResourceAsStream("../images/file_music.png")));
            renderer.setOpenIcon(openIcon);
            renderer.setClosedIcon(closedIcon);
            renderer.setLeafIcon(leafIcon);
            tree.setCellRenderer(renderer);

        } catch (IOException e) {

            e.printStackTrace();

        }
probiert. Aber funktioniert hat auch dies nicht.

Meine Struktur sieht wie folgt aus:

Java:
gui
|- gui
    |- images
    |- sammlungtable
Der angegeben Code kommt aus einer Klasse, die sich im sammlungtable-Package befindet.
Bilder werden bisher nur dann angezeigt, wenn die Klasse direkt im gui-Package ist.

Was mache ich falsch und wie kann ich das Problem lösen? Danke schonmal

edit: habs jetzt gelöst. hab nun auch noch die packages angegeben, die überhalb von gui sind.
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
Dann07 Java-Programm findet DLLs nicht! Allgemeine Java-Themen 20
T JSoup findet input Feld nicht?! Wie kann ich das Feld finden? Allgemeine Java-Themen 3
M Matcher-Klasse findet match nicht Allgemeine Java-Themen 6
G Eclipse Java findet MySQL Driver nach export nicht mehr Allgemeine Java-Themen 2
S Algorithmus welcher True-Werte in einem Array findet und auswertet. Allgemeine Java-Themen 5
S URLClassLoader findet ResourceBundle nicht Allgemeine Java-Themen 0
R Seleium / WebDriver findet weder URL noch Title Allgemeine Java-Themen 1
B Classpath Eclipse findet importierte Klassen nicht Allgemeine Java-Themen 1
A Classpath programm findet jdbc nicht Allgemeine Java-Themen 4
E ProcessBuilder findet Datei nicht Allgemeine Java-Themen 3
S Programm findet eingebundene .jar Datei nicht Allgemeine Java-Themen 7
A Collections HashMap.containsKey findet keine immutablen Objekte Allgemeine Java-Themen 3
J javax.comm findet serielle ports nicht Allgemeine Java-Themen 2
G jar Datei findet Main Class nicht... Allgemeine Java-Themen 2
X Java findet eine Enum Klasse nicht Allgemeine Java-Themen 2
J Entweder XP oder Vista findet die Datei nicht FileNotFoundException Allgemeine Java-Themen 4
G Compilier-Problem findet Klasse nicht ! Allgemeine Java-Themen 11
M Ausführbares JAR erstellen - Findet Klassen nicht Allgemeine Java-Themen 4
M Import findet das Projekt nicht. Allgemeine Java-Themen 5
K HTML-Formular findet Servlet nicht Allgemeine Java-Themen 2
S jni, javah, eclipse - wer findet den fehler? Allgemeine Java-Themen 5
K Scanner.hasNext findet kein Ende Allgemeine Java-Themen 6
W Compiler findet Pakete nicht. Allgemeine Java-Themen 2
S ResourceBundle findet Resource nicht Allgemeine Java-Themen 4
A Swing hat ein leicht verändertes Aussehen, wie findet ihrs? Allgemeine Java-Themen 28
Y Comm-API findet keine Ports Allgemeine Java-Themen 5
T ImageIcon wird nicht angezeigt Allgemeine Java-Themen 6
N Kollision zwischen ImageIcon und Rechteck Allgemeine Java-Themen 1
Screen ImageIcon in Cell der JTable Allgemeine Java-Themen 2
J Teil eines Image/ImageIcon zeichnen Allgemeine Java-Themen 2
T ImageIcon und JLabel Allgemeine Java-Themen 16
G inputstream() to imageicon() Allgemeine Java-Themen 7
C JCombobox ImageIcon & Text Allgemeine Java-Themen 2
S Grafiken/ImageIcon setzen Allgemeine Java-Themen 24
EagleEye bild aus dem internet laden oder imageicon speichern Allgemeine Java-Themen 5
Zrebna Wieso sollte man Null-Prüfungen nicht mit Optional-Objekten nutzen? Allgemeine Java-Themen 13
kodela Textfeld nicht rechteckig Allgemeine Java-Themen 10
G Doppelklick auf Javaprogramm klapt nicht Allgemeine Java-Themen 1
W Timer terminiert nicht Allgemeine Java-Themen 5
D Linux, Java-Version wird nicht erkannt bzw. welche Einstellung fehlt noch? Allgemeine Java-Themen 19
W Überflüssige Deklaration vermeiden...war da nicht mal was? Allgemeine Java-Themen 3
N lwjgl kann textureSampler nicht finden Allgemeine Java-Themen 4
P Fehler: Hauptklasse Main konnte nicht gefunden oder geladen werden Ursache: java.lang.ClassNotFoundException: Main Allgemeine Java-Themen 24
S Java Programm lässt sich vom USB-Stick starten, aber nicht von HDD Allgemeine Java-Themen 16
T .Jar kann man nicht ausführen Allgemeine Java-Themen 18
P JDK nicht installiert in Net Object Fusion Allgemeine Java-Themen 7
D Image bewegt sich nicht nach Klicken auf Button Allgemeine Java-Themen 15
N Regex schlägt nicht an Allgemeine Java-Themen 10
Y Wieso krieg ich die Unit Tests nicht hin Allgemeine Java-Themen 55
D Erste Schritte Mp3 Datei kann nicht von der Festplatte geöffnet werden - mit ChatGPT erstellt Allgemeine Java-Themen 7
G Popup wird nicht sichtbar Allgemeine Java-Themen 9
8u3631984 Funktions Parameter mit Lombok "NonNull" annotieren wird in Jacococ Testcoverage nicht herausgefiltert Allgemeine Java-Themen 3
kodela String kann nicht zu Pfad konvertiert werden Allgemeine Java-Themen 16
M Apache Proxy Weiterleitung auf Tomcat funktioniert nicht wie gewünscht Allgemeine Java-Themen 1
Momo16 Brauche Hilfe - Java Projekt kann nicht erstellt werden Allgemeine Java-Themen 12
OnDemand ApacheCommon FTP Client zuckt nicht Allgemeine Java-Themen 3
T JavaPoet - (noch) nicht existente Typen Allgemeine Java-Themen 2
E Es ist nicht möglich, eine Batch-Anweisung auszuführen. Allgemeine Java-Themen 9
C Was passt hier nicht bei der Calendar-Class Allgemeine Java-Themen 2
T Testing JUnit5: try ... catch arbeitet nicht sauber Allgemeine Java-Themen 6
W While Schleife funktioniert nicht ganz Allgemeine Java-Themen 4
OnDemand MemoryLeak nicht zu finden Allgemeine Java-Themen 26
torresbig Website login Problem - Jsoup, wie bisher, klappt nicht! Allgemeine Java-Themen 31
H do-while Schleife funktioniert nicht wie ich es möchte Allgemeine Java-Themen 7
ERlK JDA Code funktioniert nicht? Allgemeine Java-Themen 4
OnDemand Ram Freigabe erfolgt nicht nach Prozessende Allgemeine Java-Themen 18
OnDemand XML desializing Attribute bringt nicht erwartetes Ergebnis Allgemeine Java-Themen 16
N JAVA-Code mit Grafikfenster zeichnet in Windows, aber nicht Mac. Allgemeine Java-Themen 4
stormyark TikTakToe funktioniert nicht Allgemeine Java-Themen 10
N Warum wird die For Schleife nicht betreten Allgemeine Java-Themen 4
Tiago1234 Hauptklasse konnte nicht gefunden oder geladen werden Allgemeine Java-Themen 38
T Remove bei ArrayList funktioniert nicht Allgemeine Java-Themen 2
M Map<String,String>funktioniert nicht richtig Allgemeine Java-Themen 4
I "Neues" Lizenzmodell Oracle - JRE nicht mehr zur Redistribution freigegeben? Allgemeine Java-Themen 16
J c Programm läuft nicht in compilierter Version des Java Projektes Allgemeine Java-Themen 7
A code wird nicht ausgeführt Allgemeine Java-Themen 3
Blender3D Alte Beiträge nicht mehr vorhanden Allgemeine Java-Themen 6
M Warum hat Java dieses und jenes nicht... Allgemeine Java-Themen 8
W Bilder werden in App mit Jar-Datei nicht angezeigt Allgemeine Java-Themen 15
Micha43 Applet *.jar läuft nicht auf dem Mac Allgemeine Java-Themen 8
M Warum bekommen ich den Result nicht ? Allgemeine Java-Themen 17
Kiki01 Häufigster Buchstabe lässt sich nicht ermitteln Allgemeine Java-Themen 30
OnDemand RegEx /compilebekomme nicht die erwarteten Werte Allgemeine Java-Themen 9
HerrBolte Seltsamer Fehler nur in der Windows- und nicht in der Java-Console O_O Allgemeine Java-Themen 16
P String.replace() funktioniert nicht? Allgemeine Java-Themen 3
N nicht einsehbarer Fehler im code, kann nicht mehr übersetzten Allgemeine Java-Themen 51
P Karate API Test läuft nicht durch . initializationError Allgemeine Java-Themen 21
N nicht static und auch nicht new Allgemeine Java-Themen 3
Z macOS java konnte nicht entfernt werden xpc verbindungsfehler Allgemeine Java-Themen 4
T Schaltfläche wird nicht gefunden Allgemeine Java-Themen 4
boschl2000 Springerproblem-Implementierung funktioniert nicht richtig Allgemeine Java-Themen 1
F Getter Methode aufrufen funktioniert nicht Allgemeine Java-Themen 1
N Gierigen Regex in nicht-gierigen umwandeln Allgemeine Java-Themen 4
N Regulärer Ausdruck funktioniert nicht Allgemeine Java-Themen 6
AleXusher Hauptklasse startlösung konnte nicht gefunden oder geladen werden Allgemeine Java-Themen 1
G @PostConstruct Annotation nicht mehr gültig ? Allgemeine Java-Themen 7
L Objekte in Set nicht gefunden Allgemeine Java-Themen 13
T Projekt baut nicht mehr/lässt sich nicht mehr ausführen Allgemeine Java-Themen 6
izoards log4j2 will nicht.... Allgemeine Java-Themen 15
Tobero Meine Funktion für das beinhalten eines Punktes in einem Kreis funktioniert nicht Allgemeine Java-Themen 5

Ähnliche Java Themen

Neue Themen


Oben