如何将图片打包在.jar文件中?

3

我有一些关于分发我的 .jar 文件的问题。当我从 NetBeans 运行程序时,它可以正常工作,但是如果我尝试从 dist 文件夹运行它,则无法正常工作(没有任何图像被加载)。

这是我的程序层次结构:

  • src/img/随机图片
  • src/myapp/源文件

我使用以下函数加载图像:

public BufferedImage getImg(String path) throws IOException {
    if (this.getClass().getResource(path) != null) {
        return ImageIO.read(this.getClass().getResource(path));
    } else {
        return null;
    }
}

接下来:

BufferedImage image = getImg("../img/static_bg.png");
if (image != null) {
    g.drawImage(image, 309, 884, this);
}

我编译完项目后,图片被打包进了jar文件里,但是图片却无法加载,有什么想法吗?


抱歉,我修复了它。 - Squeazer
4
获取图像:getImg("/img/static_bg.png"); - Joop Eggen
哦,天啊,它是如此简单。谢谢!!! - Squeazer
"修好了。" 很好的编辑。+1 :) - Andrew Thompson
1个回答

1
要从Web应用程序的war文件中加载文件,您需要从“ServletContext”中加载它。每个Servlet上都有一个可以用于此目的的“getServletContext()”方法。也可以从“request.getSession()。getServletContext()”获取它。
URL url = servletContext.getResource(name);
if (url == null) return null;
URLConnection resourceConn = url.openConnection();
return ImageIO.read(resourceConn);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接