Klasse.getResource() gibt null zurück
Ich versuche, Bilder anzeigen, die auf dem JPanel, aber ich erhalte die Fehlermeldung :
java.lang.IllegalArgumentException: input == null!
Verstehe ich nicht, was passiert ist.
Hier ist der code, den ich verwende:
public void actionPerformed(ActionEvent e) {
try {
Image image=ImageIO.read(getClass().getResource("img/" +num.getText()+".jpg"));
Image resized = image.getScaledInstance(200, 200, 100);
pictureFrame.setIcon(new ImageIcon(resized));
} catch (Exception ex){
ex.printStackTrace();
}
}
Dies führt nur zu mir immer der Fehler!
Stack-trace erzeugt die folgenden:
Java.lang.IllegalArgumentException: input == null!
at javax.imageio.ImageIO.read(ImageIO.java:1362)
at work.Item.actionPerformed(Item.java:96)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
at java.awt.Component.processMouseEvent(Component.java:6297)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3275)
at java.awt.Component.processEvent(Component.java:6062)
at java.awt.Container.processEvent(Container.java:2039)
at java.awt.Component.dispatchEventImpl(Component.java:4660)
at java.awt.Container.dispatchEventImpl(Container.java:2097)
at java.awt.Component.dispatchEvent(Component.java:4488)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4575)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4236)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4166)
at java.awt.Container.dispatchEventImpl(Container.java:2083)
at java.awt.Window.dispatchEventImpl(Window.java:2489)
at java.awt.Component.dispatchEvent(Component.java:4488)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:668)
at java.awt.EventQueue.access$400(EventQueue.java:81)
at java.awt.EventQueue$2.run(EventQueue.java:627)
at java.awt.EventQueue$2.run(EventQueue.java:625)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:98)
at java.awt.EventQueue$3.run(EventQueue.java:641)
at java.awt.EventQueue$3.run(EventQueue.java:639)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:638)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
Wie kann ich dieses Problem lösen? Ich habe den Speicherort des Bildes, und haben versucht, von verschiedenen Standorten und immer die gleichen Fehler!
Bin ich mit der Netbeans IDE.
getClass().getResource("img/" +num.getText()+".jpg")
zurück null
. Gibt: EIN URL-Objekt oder null, wenn keine Ressource mit diesem Namen gefunden wirdlaut deinem Beitrag, es sollte einfach sein zu verstehen, was das problem durch die Verwendung von debugging-Modus
Ist das aktuelle Arbeitsverzeichnis nicht das, was Sie erwarten, es zu sein? Auch haben Sie sich abgemeldet
"img/"+num.getText()+".jpg"
um sicherzustellen, dass es ist, was Sie erwarten?mit den debugging-Modus das, was passiert. sobald die Linie 96 ist zu Lesen getClass().getResource("img/" +num.getText()+".jpg" wirft er die exception?
ich legte die Bilder-Ordner im src wo alle .java-Dateien und Fehler gab. Vor die Tür gesetzt src und gab auch Fehler.. was ist das problem?
InformationsquelleAutor user2201158 | 2013-03-22
Du musst angemeldet sein, um einen Kommentar abzugeben.
Vorausgesetzt
getClass()
zurückcom.foo.bar.MyActionListener
,getClass().getResource("img/foo.jpg")
sieht für eine Datei mit dem Namenfoo.jpg
im Paketcom.foo.bar.img
. Wenn das Bild ist nicht in diesem Paket, oder wenn es in diesem Paket ist aber das root-Verzeichnis nicht in der Umgebungsvariable classpath, gibt die Methode null zurück.Wenn der img Ordner ist im root des classpath verwenden, sollten Sie
getClass().getResource("/img/foo.jpg")
(Hinweis: die führenden/
), odergetClass().getClassLoader().getResource("img/foo.jpg")
.Nein. Sie stellen Sie sicher, um die img-Ordner in der richtigen Lage. Oder du änderst den Pfad für den Zugriff auf das Bild, so dass es, findet es, wo es ist. Ohne zu sagen, wo du den img-Ordner, kann ich nicht sagen, welchen Weg Sie verwenden sollten.
der Ordner "Bilder" ist derzeit in den src-Ordner unter diesem Pfad C:\Documents und Einstellungen\Administrator\eigene Dateien\Arbeit
So sollten Sie verwenden, was zu dir Sag ich am Ende meiner Antwort:
getClass().getResource("/img/foo.jpg")
odergetClass().getClassLoader().getResource("img/foo.jpg")
. Natürlich müssen Sie ersetzenfoo
durch den zurückgegebenen Wert vonnum.getText()
:getClass().getResource("/img/" + num.getText() + ".jpg")
ok, ich habe so etwas wie dieses: String a = num.getText(); Image img=ImageIO.read(getClass().getClassLoader().getResource("img/"+a+".jpg"));
InformationsquelleAutor JB Nizet
Geben Sie den relativen Pfad zur Quelldatei.
Zum Beispiel, wenn Sie haben:
Und Sie sind in der
classes
Ordner, den Sie schreiben sollte:InformationsquelleAutor Omar Chaabouni