java - Class.getResource()返回null

标签 java getresource

我正在尝试在JPanel上显示图片,但我不断收到错误消息:

java.lang.IllegalArgumentException: input == null!



我不明白发生了什么。

这是我正在使用的代码:
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();
    }
}

这只是导致我得到错误!

堆栈跟踪产生以下内容:
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)

我该如何解决?我检查了图像的位置,并尝试从不同的位置进行操作,总是得到相同的错误!

我正在使用Netbeans IDE。

最佳答案

假设getClass()返回com.foo.bar.MyActionListenergetClass().getResource("img/foo.jpg")foo.jpg包中查找名为com.foo.bar.img的文件。如果镜像不在此程序包中,或者它在此程序包中,但其根目录不在类路径中,则该方法将返回null。

如果img文件夹位于类路径的根目录下,则应使用getClass().getResource("/img/foo.jpg")(注意开头的/)或getClass().getClassLoader().getResource("img/foo.jpg")

关于java - Class.getResource()返回null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46915106/

相关文章:

java - kafka消费者内存消耗高

java - 图像未在 JTable (Java Swing) 中显示

java - 使用 getResource 时出现 NullPointerException

java - java web项目中的getResource

java - 我在 java 的各种 CDI 限定符中看到的 values() 是什么?

Java 二进制补码转整数

java - 如何使用 Eclipse 的数据工具平台设置登录超时?

java - 使用 getResource 写入文件

Java 资源文件夹名称与其他名称

java - 使用相对路径读取 JAR 中的文件