ImageIO.read -> Can`t read input file

TDO88

Bekanntes Mitglied
Hallo Zusammen,

ich versuche über folgenden Code ein Bild einzulesen:
Code:
BufferedImage image = ImageIO.read(new File("resources/Kolli.png"));

und bekomme immer den Fehler: Can`t read input file
Ich benutze Netbeans 8.2 und habe die Struktur, wie im Bild zu sehen ist.
Komischerweise funktioniert an anderer Stelle des Programms folgender Code ohne Probleme:
Code:
dynamicReportsComponent =
          cmp.horizontalList(
              cmp.image("resources/MW.png").setFixedDimension(60, 60),

Die Bilder liegen beide im gleichen Ordner.

Hat jemand eine Idee, warum das erste Bild nicht gefunden wird?

Gruß
TDO
 

Anhänge

  • Netbeans.png
    Netbeans.png
    5,6 KB · Aufrufe: 58
Moin,

wird nicht relativen Pfaden klar kommen!
Gib' mal den absoluten Pfad ein!

VG Klaus

Jain... Die Ordnerstruktur bei mir sieht so aus:
...\NetBeansProjects\Projectname -> Ist das Hauptverzeichnis des Projects
...\NetBeansProjects\Projectname\src\resources -> Da sind die Bilder versteckt
...\NetBeansProjects\Projectname\src\components -> Da sind alle .java Files drin

Wenn ich jetzt
Code:
new File("src/resources/Kolli.png")
eingebe findet er es und es läuft.
Allerdings sieht die Ordnerstruktur auf dem Zielrechner etwas anders aus und ich würde es gerne aus Kompatibilitätsgründen alles so lassen. Den Pfad ...src/resources/... gibt es auf dem Zielsystem nicht.

Gruß
TDO
 
Wenn das Bild im Bundle liegt solltest du es mit getResource laden...
Habe es schon mit
Code:
image = ImageIO.read(new File(this.getClass().getResource("resources/Kolli.png").toURI()));

oder
Code:
image = ImageIO.read(this.getClass().getResource("resources/Kolli.png").toURI());

Probiert, bekomme aber immer eine NullPointerException.
 
Du kannst einfach ImageIO.read(this.getClass().getResourceAsStream("resources/Kolli.png"));nutzen.

Pfad musst du gegebenenfalls anpassen, das ist in dem Fall zT Netbeans-spezifisch...
 
Du kannst einfach ImageIO.read(this.getClass().getResourceAsStream("resources/Kolli.png"));nutzen.

Pfad musst du gegebenenfalls anpassen, das ist in dem Fall zT Netbeans-spezifisch...

Gibt mir leider auch eine NullPointerException zurück.
Mir bleibt wohl nichts anderes übrig, als den Pfad mit src/ anzugeben und den Ordner im Zielsystem neu anzulegen.
Mich wundert es nur so, dass es in einem Fall einfach so funktioniert und im anderen Fall nicht, obwohl beide Bilder im gleichen Verzeichnis liegen 😡
 
pack das ganze mal als Jar und entzippe die dann - daran siehst du die passenden Pfade.

den Pfad mit src/ angeben ist in jedem Fall völliger Unsinn.

Mich wundert es nur so, dass es in einem Fall einfach so funktioniert und im anderen Fall nicht, obwohl beide Bilder im gleichen Verzeichnis liegen 😡
Ohne zu sehen, wie es in dem funktionierenden Fall klappt, bringt einem wenig zu wissen, dass es klappt...
 
Ohne zu sehen, wie es in dem funktionierenden Fall klappt, bringt einem wenig zu wissen, dass es klappt...

Ist in meinem ersten Post zu sehen. Da wird ein Bild für einen dynamicReport geladen und es funktioniert.

pack das ganze mal als Jar und entzippe die dann - daran siehst du die passenden Pfade.

Habe ich gemacht. Im Ordner des .jar Files ist unter anderem ein Ordner resources und in diesem befindet sich mein Bild Kolli.png
 
Ist in meinem ersten Post zu sehen. Da wird ein Bild für einen dynamicReport geladen und es funktioniert.
Nein, da wird irgendeine Funktion aufgerufen, deren Funktionsweise nicht ersichtlich ist.


Habe ich gemacht. Im Ordner des .jar Files ist unter anderem ein Ordner resources und in diesem befindet sich mein Bild Kolli.png
Dann sollte zumindest ImageIO.read(this.getClass().getResourceAsStream("/resources/Kolli.png")); funktionieren, wenn die Jar ausgeführt wird.

Liegen die Klassen auch im Package components?
 
Nein, da wird irgendeine Funktion aufgerufen, deren Funktionsweise nicht ersichtlich ist.

Das ist Teil eines JasperReports, in den auch ein Bild geladen wird und im PDF eingefügt wird

Dann sollte zumindest ImageIO.read(this.getClass().getResourceAsStream("/resources/Kolli.png")); funktionieren, wenn die Jar ausgeführt wird.

Hier hast du indirekt die Lösung des Problems geliefert. Wenn ich ein / vor resources setze funktioniert es einwandfrei.
Das war also des Rätsels Lösung.
Vielen Dank dafür.

Gruß
TDO
 

Zurück
Oben