当前位置: 首页 > 面试题库 >

为什么我的图标处理代码会引发NullPointerException?

鲁钱明
2023-03-14
问题内容

我为按钮添加了图像,但是当我运行该框架时,将抛出此异常。为什么?请帮助我。

init:

deps-jar:
compile-single:
run-single:
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
        at javax.swing.ImageIcon.<init>(ImageIcon.java:138)
        at ClientGUI.IdAndPasswordFrame.initComponents(IdAndPasswordFrame.java:91)
        at ClientGUI.IdAndPasswordFrame.<init>(IdAndPasswordFrame.java:22)
        at ClientGUI.IdAndPasswordFrame$4.run(IdAndPasswordFrame.java:200)
        at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
        at java.awt.EventQueue.dispatchEvent(EventQueue.java:597)
        at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:273)
        at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:183)
        at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:173)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:168)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:160)
        at java.awt.EventDispatchThread.run(EventDispatchThread.java:121)
BUILD SUCCESSFUL (total time: 1 second)

第138行:

public ImageIcon (URL location) {
    this(location, location.toExternalForm());
}

第91行:

 jButton1.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Images/yahoo_1.gif"))); // NOI18N

我使用了此检查不当(建议使用Peter Lang):System.out.println(getClass()。getResource(“ /
Images / yahoo_1.gif”)); 它返回null,为什么?请帮我。


问题答案:

这意味着,将getClass().getResource("/Images/yahoo_1.gif")返回null

JavaDoc指出,如果

找不到资源,或者调用者没有足够的特权来获取资源。

  1. 检查是否getResource真的返回null
    System.out.println(getClass().getResource("/Images/yahoo_1.gif"));

  2. 确保您的路径正确并且在您的类路径中。

编辑

我只是用NetBeans尝试过。我创建了以下结构

Source Packages
  Images
    yahoo_1.gif

并且您的代码运行良好。这是你的结构吗?

尝试右键单击您的应用程序,然后选择Clean and Build



 类似资料:
  • 这似乎与对象没有被实例化有关,尽管我不太明白为什么。有人知道出什么事了吗?

  • 我正在做一个编码练习:给定一个整数序列作为一个数组,确定是否可以通过从数组中删除不超过一个元素来获得严格递增的序列。 所以我写了这段代码: 现在,这段代码似乎适用于大多数序列,但这段代码引发了一个错误: 错误如下: 我只是不明白列表索引怎么可能超出范围…有人有线索吗?

  • 问题内容: 我已经使用Selenium用Java编写了代码。当我运行代码时,它将引发NullPointerException。检查以下异常 我的代码如下: 问题答案: 您会看到一个原因,因为您从一开始就尝试访问该方法,这需要in的活动实例,即to &and perform 方法。 解决方案是先访问该方法,以便您拥有and 的活动实例。接下来,您可以访问方法。 这是您的工作代码块:

  • 问题内容: 我正在尝试使用sigaction设置异常处理程序。对于第一个例外,它运作良好。但是在第一个异常之后不会调用sigaction处理程序,并且在第二个信号发生时程序会突然结束。 问题答案: 信号和异常互不相关。您正在使用的内容(从异步信号处理程序引发异常)只能在支持该功能的少数编译器之间移植,例如GCC和Intel C / C ++ with 。 就是说,您忘记做的是取消阻止信号:执行信号

  • 问题内容: 为什么这段代码不抛出?它在不使用方法的情况下修改了一段时间,这是唯一安全的删除方法。 如果将替换为,则会得到相同的结果。但是,如果我将列表更改为或只是得到了预期的异常。到底是怎么回事?我正在使用是否相关。 编辑 我找到了以下链接 http://bugs.java.com/bugdatabase/view_bug.do?bug_id=4902078 相关部分是 天真的解决方案是将协同修改

  • 我使用Selenium编写了Java代码。当我运行代码时,它会抛出NullPointerException。检查下面的异常 我的代码如下: