java - 在没有代码的情况下持续获取 NullPointerException

标签 java nullpointerexception

本质上,我正在尝试加载调整图像大小以将其放在 JButton 上。今天早些时候这是可以工作的,但是当我把我的驱动器带回家处理它并运行该程序时,我得到了java.lang.NullPointerException

我对 Java 很陌生,所以如果我错了,请原谅我,但通常这本质上意味着我正在调用不存在的东西。不管怎样,即使我将代码向上或向下移动几行,它也会指出错误位于第 179 行。即使这一行没有代码,我也会收到错误。我已在错误附近包含了代码,并在底部包含了完整的错误消息。

谢谢!

Image play = null;
try {
    play = ImageIO.read(new File("/images/play.png"));
} catch (IOException e1) {
    // TODO Auto-generated catch block
    e1.printStackTrace();
}
System.out.println("true");

Image pause = null;
try {
    pause = ImageIO.read(new File("/images/pause.png"));
} catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}

// The line it says the error is on.
ImageIcon playIcon = new ImageIcon(play.getScaledInstance(25, 25, Image.SCALE_DEFAULT));
ImageIcon pauseIcon = new ImageIcon(pause.getScaledInstance(25, 25, Image.SCALE_DEFAULT));

btnPause.setIcon(playIcon);
btnPause.setSelectedIcon(pauseIcon);

堆栈跟踪:

java.lang.NullPointerException
at Main.<init>(Main.java:179)
at Main$1.run(Main.java:55)
at java.awt.event.InvocationEvent.dispatch(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access$500(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)

最佳答案

您的代码在使用 try..catch block 的方式以及异常处理方面存在问题。从您的示例中获取相关代码:

try {
    play = ImageIO.read(new File("/images/play.png"));
} catch (IOException e1) {
    e1.printStackTrace();
}
ImageIcon playIcon = new ImageIcon(play.getScaledInstance(25, 25, Image.SCALE_DEFAULT));

如果第二行(读取图像并将其分配给play)失败,则会抛出异常,捕获并打印出来。然后您继续,即使播放尚未分配。因此,当您调用 play.getScaledInstance() 时,您将收到 NullPointerException,因为 playnull

您需要做的是停止处理并返回一些失败指示。您无法继续。

关于java - 在没有代码的情况下持续获取 NullPointerException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34936970/

相关文章:

java - finally block 中的堆栈溢出错误处理

java - 如何在 OpenTest 中开始新的测试 session ?

java - 从数组中检索特定范围的数据 (Java)

java - 如何从另一个 Web 服务调用一个 Web 服务(在同一个 WAR 中)

java - 如何停止方法调用 Mockito 中另一个类中的方法?

java - 从 xlsx 文件读取时出现 NullPointerException

java - 如何在 java 的 android 2.2 sdk 中使用 flash player lite 播放 .swf?

java - 什么是NullPointerException,我该如何解决?

Java + Android -> 启动新 Activity 时出现空指针异常

java - NullPointerException 的问题