首页 > 解决方案 > 无法使用 java swing 从类路径渲染图像?

问题描述

这是我的代码&如果我运行它,它会打印出来

Exception in thread "main" java.lang.IllegalArgumentException: input == null!
    at javax.imageio.ImageIO.read(ImageIO.java:1348)
    at com.auroraclient.launcher.AuroraLauncher.init(AuroraLauncher.java:28)
    at Main.main(Main.java:7)

我 100% 确定包和文件在那里,但 java 似乎找错了地方。有谁知道这里发生了什么?

public enum AuroraLauncher {

    instance;

    public JFrame frame;
    public AuroraPanel panel;

    public void init(){
        frame = new JFrame();
        frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
        frame.setTitle("Aurora Launcher rel- 91021");
        frame.setBounds(320, 180, 1280, 720);
        frame.setUndecorated(true);
        frame.setResizable(false);
        panel = new AuroraPanel(frame);
        panel.setBounds(0, 0, 1280, 720);
        panel.setVisible(true);
        frame.add(panel);
        try {
            JLabel label = new JLabel(new ImageIcon(ImageIO.read(this.getClass().getResourceAsStream("resources/wat.png"))));
            label.setVisible(true);
            label.setBounds(0, 0, 1280, 720);
            frame.add(label);
        } catch (IOException e) {
            e.printStackTrace();
        }
        /**
         * Layer top buttons
         */
        frame.setVisible(true);
    }

}

标签: javaimageswingawtembedded-resource

解决方案


如果您使用的是 Maven(我猜我使用的是 /resources 一词),那么 /resources 文件夹中的所有内容通常都会映射到类路径的根目录。

所以你可以试试这个:

JLabel label = new JLabel(new ImageIcon(ImageIO.read(this.getClass().getResourceAsStream("wat.png"))));
        

推荐阅读