Class.getResource()返回null [英] Class.getResource() returns null
问题描述
我正在尝试在JPanel上显示图片,但我一直收到错误:
I am trying to display pictures on the JPanel but I keep getting the error :
java.lang.IllegalArgumentException:input == null!
java.lang.IllegalArgumentException: input == null!
我不明白发生了什么。
这里是我正在使用的代码:
Here is the code I am using:
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();
}
}
这只会导致我收到错误!
This just leads to me getting the error!
堆栈跟踪产生以下结果:
Stack trace produces the following:
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)
我该如何解决这个问题?我已经检查了图像的位置,并尝试从不同的位置,并始终得到相同的错误!
How can I solve this? I have checked the location of the image, and have tried from different locations and always get the same error!
我正在使用Netbeans IDE。
I'm using the Netbeans IDE.
推荐答案
假设 getClass()
返回 com.foo.bar。 MyActionListener
, getClass()。getResource(img / foo.jpg)
查找名为的文件foo.jpg 包中的
com.foo.bar.img 。如果图像不在此包中,或者它在此包中但其根目录不在类路径中,则该方法将返回null。
Assuming getClass()
returns com.foo.bar.MyActionListener
, getClass().getResource("img/foo.jpg")
looks for a file named foo.jpg
in the package com.foo.bar.img
. If the image is not in this package, or if it is in this package but its root directory is not in the classpath, the method will return null.
如果img文件夹位于类路径的根目录,您应该使用 getClass()。getResource(/ img / foo.jpg)
(注意前导 /
),或 getClass()。getClassLoader()。getResource(img / foo.jpg)
。
If the img folder is at the root of the classpath, you should use getClass().getResource("/img/foo.jpg")
(note the leading /
), or getClass().getClassLoader().getResource("img/foo.jpg")
.
这篇关于Class.getResource()返回null的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!