当前位置: 首页 > 知识库问答 >
问题:

Class.get资源()返回null

何乐
2023-03-14

我试图在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)

我如何解决这个问题?我已经检查了图像的位置,并且从不同的位置尝试,总是得到相同的错误!

我正在使用Netbean IDE。

共有2个答案

欧阳俊捷
2023-03-14

您应该给出源文件的相对路径。例如,如果您有以下内容:

src
 --img
 --classes

你在class文件夹中,你应该写下:

getClass().getResource("../img/" +num.getText()+".jpg")
商夜洛
2023-03-14

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

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

 类似资料:
  • 我有一个注释定义如下: 我是这样使用它的: 现在,我有了第二个接口,它扩展了第一个: 我想获得MySecondInterface的所有注释,这意味着我也想获得超级接口上定义的注释。 我所尝试的: ######################################################################################### 结果是: 在所有情况下,

  • 问题内容: 我已经搜索了可能的解决方案。并且我尝试了循环以及mysql_fetch_assoc和mysql_fetch_array的变体,但我仍然遇到资源ID#5:0:错误。 这是我认为会产生错误的代码。 问题答案: “资源ID#5:0”不是错误。这意味着您试图而不是尝试使用变量,例如对于fetch_assoc 使用$ row [column],对于fetch_row使用$ row [0],对于f

  • 问题内容: 我正在使用Spring Boot和Spring Data Rest创建一个简单的CRUD- App(购物清单)。我有资源:。是否有一种简单的方法可以只返回属于发送请求的用户的资源?(多个用户支持)因此,用户仅获得自己的ShoppingItems,而不是每个ShoppingItem。还是我必须由我自己实现一个Controller? 我发现Spring DataREST基于用户过滤数据,这

  • 我有下面的方法,它使用Apache Commons Http客户机向给定的URI发送异步GET,并返回Future和响应。 CloseableHttpAsyncClient实现了Closeable,因此我使用try/resource结构。 下面您可以看到其用法: 问题是,当我调用get on a future时,它不会返回所需的HttpResponse。如果我使用重载的get()方法,它将一直等待

  • 问题内容: 这个问题已经在这里有了答案 : 7年前关闭。 可能重复: 如何从PHP的MySql响应中“回显”“资源ID#6”? 我是php和SQL的新手,我正在尝试使php页面列出表中的枚举数。我正在使用此代码,但它返回资源ID#2: 问题答案: 因为执行时会获得mysql资源。 使用类似的方法来获取下一行。它返回一个以列名作为索引的数组。就您而言,可能是。 这是您的代码段的修复程序和一些小改进:

  • 这很奇怪,因为我有这样的路由:,它根本不工作,它不断返回