【问题标题】:How to load the image from a jar file?如何从 jar 文件中加载图像?
【发布时间】:2021-08-06 04:05:23
【问题描述】:

此代码仅在我运行我的项目时才有效,但如果我运行 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();
            }

如何加载图片?

【问题讨论】:

  • 1) 不确定您为什么使用 Paths 类。 ImageIO.read(...) 方法将接受 URL 作为参数 2) 您是否在 .jar 文件中包含该文件?
  • getResource 和 getResourceAsStream 的参数不是文件名,而是 URL。反斜杠不是 URL 中的合法字符。你的意思可能是"/transparentSticker.png"。另外,正如 camickr 所说,不要尝试将 URL 转换为文件;直接加载网址即可。

标签: java jar nullpointerexception inputstream


【解决方案1】:

您确实说过 PNG 在 src 文件夹中?

看看,看完thisthis,我觉得应该是:

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

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

想想unix,而不是windows。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-06-15
    • 2013-09-04
    • 1970-01-01
    • 2023-04-11
    • 1970-01-01
    • 2011-04-24
    相关资源
    最近更新 更多