Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 持续在线获取NullPointerException而不使用任何代码_Java_Nullpointerexception - Fatal编程技术网

Java 持续在线获取NullPointerException而不使用任何代码

Java 持续在线获取NullPointerException而不使用任何代码,java,nullpointerexception,Java,Nullpointerexception,本质上,我正在尝试加载一个调整图像大小的命令,以便将其放在JButton上。这在今天早些时候是可行的,但当我把我的驱动器带回家工作并运行程序时,我得到了java.lang.NullPointerException 我对Java非常陌生,所以如果我错了,请原谅我,但通常这意味着我调用的是不存在的东西。不管怎么说,它声明错误在第179行,即使我将代码上移或下移几行。即使这行没有代码,我也会出错。我在错误附近包含了代码,在底部包含了完整的错误消息 谢谢 Image play = null; try {

本质上,我正在尝试加载一个调整图像大小的命令,以便将其放在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)
java.lang.NullPointerException
在Main(Main.java:179)
Main$1.run(Main.java:55)
在java.awt.event.InvocationEvent.dispatch(未知源)处
位于java.awt.EventQueue.dispatchEventImpl(未知源)
位于java.awt.EventQueue.access$500(未知源)
在java.awt.EventQueue$3.run处(未知源)
在java.awt.EventQueue$3.run处(未知源)
位于java.security.AccessController.doPrivileged(本机方法)
位于java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(未知源)
位于java.awt.EventQueue.dispatchEvent(未知源)
位于java.awt.EventDispatchThread.pumpOneEventForFilters(未知源)
位于java.awt.EventDispatchThread.pumpEventsForFilter(未知源)
位于java.awt.EventDispatchThread.pumpEventsForHierarchy(未知源)
位于java.awt.EventDispatchThread.pumpEvents(未知源)
位于java.awt.EventDispatchThread.pumpEvents(未知源)
位于java.awt.EventDispatchThread.run(未知源)

您的代码在使用
try..catch
块和异常处理的方式上存在问题。以您的示例中的相关代码为例:

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.getScaleInstance()
时,您将得到一个
NullPointerException
,因为
play
null


相反,您需要做的是停止处理并返回一些故障指示。无法继续。

您的代码在使用
try..catch
块和异常处理的方式上存在问题。以您的示例中的相关代码为例:

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.getScaleInstance()
时,您将得到一个
NullPointerException
,因为
play
null


相反,您需要做的是停止处理并返回一些故障指示。您无法继续。

编辑代码后是否重新编译?很抱歉,我在这里做得太愚蠢了。但是当你说“重新编译”时,你的意思是按“运行”按钮,对吗?如果是的话,我有。我所做的唯一更改是缩短:play=play.getScaledInstance(25,25,Image.SCALE\u默认值);ImageIcon playIcon=新的ImageIcon(播放);into ImageIcon playIcon=新的ImageIcon(play.getScaledInstance(25,25,Image.SCALE_默认值));我不知道您正在使用什么环境进行开发,也不知道它是否会自动编译,但“运行”是您在编译后要做的事情。您在编辑代码后是否重新编译了?很抱歉,我在这里犯了愚蠢的错误。但是当你说“重新编译”时,你的意思是按“运行”按钮,对吗?如果是的话,我有。我所做的唯一更改是缩短:play=play.getScaledInstance(25,25,Image.SCALE\u默认值);ImageIcon playIcon=新的ImageIcon(播放);into ImageIcon playIcon=新的ImageIcon(play.getScaledInstance(25,25,Image.SCALE_默认值));我不知道您在使用什么环境进行开发,也不知道它是否会自动编译,但“运行”是您在编译后要做的事情。哦,好的,这很有意义。我不认为play=ImageIO等会失败,但我想其他情况可能需要这样做。如何修改try/catch块以删除错误?是否像添加系统一样简单。退出(0);进入catch块?也感谢您的帮助,但是为什么eclipse说错误在完全不同的行上呢?如果它永远不会失败,为什么要把它放在try/catch块中呢:)是否打印了异常,即它是否真的失败了?如果不是,可能还有其他原因。是的,您可以使用
系统。如果愿意,请退出(0)
。我很困惑。179行是代码中注释所指的行吗?哦,好的,这很有意义。我不认为play=ImageIO等会失败,但我想其他情况可能需要这样做。如何修改try/catch块以删除错误?是否像添加系统一样简单。退出(0);进入catch块?也感谢您的帮助,但是为什么eclipse说错误在完全不同的行上呢?如果它永远不会失败,为什么要把它放在try/catch块中呢:)是否打印了异常,即它是否真的失败了?如果不是,可能还有其他原因。是的,您可以使用
系统。如果愿意,请退出(0)
。我很困惑。179行是代码中注释所指的行吗?