首页 > 解决方案 > 如何从 jar 文件中加载图像?

问题描述

此代码仅在我运行我的项目时才有效,但如果我运行 Jar 文件,我会收到 NullPointerException。该图像位于 src 目录中。

try {
            URL resource = Sticker.class.getResource("\\transparentSticker.png");
            img = null;
            this.img = ImageIO.read(Paths.get(resource.toURI()).toFile());
            System.out.println("c");
        } catch (IOException | URISyntaxException e) {
            System.out.println("caught");
        }

如果我使用此代码,则会引发 IllegalArgumentException。

InputStream input = Sticker.class.getResourceAsStream("\\transparentSticker.png");
        if (input == null) {
          
            input = Sticker.class.getClassLoader().getResourceAsStream("\\transparentSticker.png");
        }
            try {
                img = ImageIO.read(input);
            } catch (IOException e) {
                e.printStackTrace();
            }

如何加载图像?

标签: javajarnullpointerexceptioninputstream

解决方案


你确实说PNG在src文件夹中?

让我们看看,读完thisthis后,我认为它需要是:

InputStream input = Sticker.class.getResourceAsStream("/src/transparentSticker.png");

或者

URL resource = Sticker.class.getResource("/src/transparentSticker.png");

想想unix,而不是windows。


推荐阅读