有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java BuffereImage/ImageIcon空指针异常

https://spooker.cc/spooker3.png

代码:

    private JLabel getSpookerImage() {
    URL url;
    try {
        url = new URL("http://spooker.cc/spooker3.png");
        BufferedImage image = ImageIO.read(url);
        ImageIcon icon = new ImageIcon(image);
        return new JLabel(icon, JLabel.CENTER);
    } catch (Exception e) {
        e.printStackTrace();
    }

    return null;
}

例外情况:

java.lang.NullPointerException
at javax.swing.ImageIcon.<init>(ImageIcon.java:240)
at cc.spooker.ui.tabs.MainTab.getSpookerImage(MainTab.java:63)
at cc.spooker.ui.tabs.MainTab.getDestructPanel(MainTab.java:53)
at cc.spooker.ui.tabs.MainTab.<init>(MainTab.java:35)
at cc.spooker.ui.Frame.<init>(Frame.java:35)
at cc.spooker.Server.<init>(Server.java:21)
at cc.spooker.Main.main(Main.java:8)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:147)

也许是因为图像的背景是空白的?一点线索也没有,有什么帮助吗


共 (1) 个答案

  1. # 1 楼答案

    ImageIO.Read()方法正在寻找用于图像的图像读取器,但找不到读取器,因此返回null。read()方法接受PNG,所以我猜您的图像不是有效的PNG文件。尝试将其重新导出为PNG,或者以您创建的方式重新导出,以确保它不会以某种方式出现格式错误。我在这里用PNG文件测试了类似的代码:

    http://mrose.org/cc/png-test.png

    而且效果很好