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 文件中,但它们没有被加载。任何想法为什么?

4

1 回答 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);
于 2013-05-16T10:13:44.677 回答