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

TDO88

Bekanntes Mitglied
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
 

TDO88

Bekanntes Mitglied
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.
 

mrBrown

Super-Moderator
Mitarbeiter
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...
 

TDO88

Bekanntes Mitglied
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 :mad:
 

mrBrown

Super-Moderator
Mitarbeiter
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 :mad:
Ohne zu sehen, wie es in dem funktionierenden Fall klappt, bringt einem wenig zu wissen, dass es klappt...
 

TDO88

Bekanntes Mitglied
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
 

mrBrown

Super-Moderator
Mitarbeiter
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?
 

TDO88

Bekanntes Mitglied
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
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
A Probleme mit ImageIO.read( . ) Allgemeine Java-Themen 12
S NoClassDefFoundException - ImageIO.read - Applet Allgemeine Java-Themen 3
C ImageIO die read-Methode liefert mir ein null- Wert zurück Allgemeine Java-Themen 10
G ImageIo ignoriert Transparenz in PNGs Allgemeine Java-Themen 3
T JFreeChart Diagramm speichern - Problem mit ImageIO nach Projektexport Allgemeine Java-Themen 3
E ImageIo mit png und alpha Allgemeine Java-Themen 4
F ImageIO cant create InputStream Allgemeine Java-Themen 9
bj99 ImageIO.write() macht Probleme Allgemeine Java-Themen 7
G Problem im ImageIO und JAR Allgemeine Java-Themen 2
W Ausgabequalität von ImageIO Allgemeine Java-Themen 5
S Problem mit ImageIO Allgemeine Java-Themen 10
X Input/Output InputStream/Scanner(System.in) read()/hasNextLine() block unterbrechen Allgemeine Java-Themen 7
D Read JSON File Problem Allgemeine Java-Themen 9
S Read End Dead Allgemeine Java-Themen 2
S Read End Dead Allgemeine Java-Themen 1
thet1983 Input/Output read properties file from classpath Allgemeine Java-Themen 3
H Security Manager (IIOException: Can't read input file!) Allgemeine Java-Themen 2
I Javafx Open/Read und Tree Funktion Allgemeine Java-Themen 14
M Read end ded [PipedInputStream...] Allgemeine Java-Themen 0
M Threads synchroner Zugriff (add/delete/read) auf eine Liste Allgemeine Java-Themen 6
T InvalidClassException - Read null attempting to read class descriptor for object Allgemeine Java-Themen 8
A RandomAccessFile.read(byte[] b) Allgemeine Java-Themen 9
1 Check read/write permission for file Allgemeine Java-Themen 4
J write / read Problem Allgemeine Java-Themen 9
E Durch System.in.read() blockierten Thread stoppen Allgemeine Java-Themen 10
N read streams umleiten Allgemeine Java-Themen 2
G Read only Eclipse- Datei Allgemeine Java-Themen 5
W Konflikt byte->int, in.read->arraycopy Allgemeine Java-Themen 7
M BufferedReader.read(char[] cbuf) liefert falsche Werte? Allgemeine Java-Themen 4
S java.io.InputStream.read(byte[] b) überschreiben Allgemeine Java-Themen 33
A System.in.read() Problem Allgemeine Java-Themen 6
R read/readline blockiert Allgemeine Java-Themen 5
F Zu große Werte beim byteweisen Lesen mit BufferedReader.read Allgemeine Java-Themen 5
M InputStream.read abbrechen Allgemeine Java-Themen 2

Ähnliche Java Themen

Neue Themen


Oben