2013-03-15 13 views
8

Dies ist eine Frage, die auf dieser Seite schon 100 mal gestellt wurde, aber ich habe sie alle angeschaut und obwohl sie alle gelöst wurden, funktionierte keine der Lösungen für mich .java.lang.IllegalArgumentException: input == null! bei der Verwendung von ImageIO.read, um Bild als gepufferte Bild zu laden

Hier ist, was mein Code wie folgt aussieht:

public Button1(Client client, String imgName) { 
    this.client = client; 

    try { 
     this.icon = ImageIO.read(this.getClass().getResourceAsStream("/resources/" + imgName)); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 

Wenn der Code läuft es in der folgenden Fehler führt:

Exception in thread "main" java.lang.IllegalArgumentException: input == null! 
at javax.imageio.ImageIO.read(Unknown Source) 

Der String ImgName an den Konstruktor von einem Kind-Klasse übergeben wird und der Name eines Bildes (zB image.png). Ich habe auch sichergestellt, dass mein Ressourcen-Ordner im Stammverzeichnis des Projektordners ist und als Quellordner im Eclipse-Projekt enthalten ist. Ich habe auch dafür gesorgt, dass System.getProperty("user.dir") auf den richtigen Ort zeigt. Ich habe auch getResource() anstelle von getResourceAsStream() versucht, aber es funktioniert immer noch nicht.

+3

Wenn der Ordner 'resources' in Eclipse tatsächlich als Quellordner markiert ist, sollten Sie normalerweise den Abschnitt'/resources' in der Dateiposition oben nicht einschließen. Stattdessen wäre der Ordner "Ressourcen" der "root" und Sie sollten einfach "" und "imgName" tun können. –

+0

Ich habe nur meine persönlichen Erfahrungen gemacht. Ich untersuchte ein ähnliches Problem für eine Stunde, als ich bemerkte, dass meine .jpg in Ressourcen mit einem Großbuchstaben begann, während ich Pfad zu .jpg definiert hatte, beginnend mit Kleinbuchstaben. Also Captain offensichtliche Warnung, aber immer noch - hüte dich vor den Dateinamen :) Viel Glück. – Alex

+0

[Diese Antwort] (http://stackoverflow.com/a/17753326/731314) war die Lösung, als ich denselben Fehler bekam. – Gary

Antwort

0

Try this:

this.icon = ImageIO.read(this.getClass().getResource("/resources/" + imgName)); 
+0

Ich glaube, ich habe vergessen zu erwähnen, dass ich das auch versucht habe, immer noch nicht funktioniert. – tyler

10

Versuchen Sie dies mit: -

this.icon = ImageIO.read(new FileInputStream("res/test.txt")); 

wo res Ordner auf dem gleichen Niveau wie Ihr src Ordner vorhanden ist. Wenn Sie bemerken, wurde der Schrägstrich / vor dem Ordnername res entfernt.

+0

Probieren Sie es einfach aus - es wurde kein Fehler ausgegeben, aber die Bilder wurden nicht angezeigt. – tyler

+0

Überprüfen Sie, ob Ihre Image-Datei null ist oder nicht. – SudoRahul

+1

Vielen Dank, viel Frustration vermieden ... Narrowly ... – Andy

1

Der als Argument für getResourceAsStream() übergebene Pfad sollte relativ zum Klassenpfadset sein. So versuchen diese

Ändern
this.icon = ImageIO.read(this.getClass().getResourceAsStream("/resources/" + imgName)); 

zu

this.icon = ImageIO.read(this.getClass().getResourceAsStream("resources/" + imgName)); 
+0

Alle anderen Threads mit diesem Problem sagen, dass der Schrägstrich eigentlich da sein sollte, aber für mich sowieso nichts funktioniert. – tyler

+0

Versuchen Sie, nach imgName für null zu suchen. – Kishore

+0

Ich habe schon alles mit print-Anweisungen auf Null überprüft. Nichts kommt zurück als null oder etwas Unerwartetes außer für die Anweisung 'this.getClass(). GetResourceAsStream ("/ resources /" + imgName)'. – tyler

0

Sie können dies versuchen:

image = ImageIO.read(getClass().getResource("/resources/" + imgName)); 
+0

das beantwortet die Frage nicht. lies es nochmal - OP hat es ohne Glück versucht. – andr

0

Versuchen Sie, die folgende

this.icon = ImageIO.read(this.getClass().getResourceAsStream("../resources/" + imgName)); 
-2

mit Try This

private BufferedImage get(String path) throws IOException{  
    URL url = this.getClass().getClassLoader().getResource(path);  
    String thing = url.getFile();  
    return ImageIO.read(new File(thing));  
} 
+1

Bitte korrigieren Sie den Code der Frage, nicht kopieren/fügen Sie einen nicht verwandten Code ohne Kontexte oder Erklärungen ... – Kartoch