繁体   English   中英

在Java动态Web项目中找不到图像

[英]Cannot find the image in the java dynamic web project

我有以下问题:

我创建了应该绘制动态图的servlet。 在绘制过程中,它应该从另一个目录中获取图片并将其绘制到另一个图像上。 一切都应该正常工作:

try {
            BufferedImage temp = ImageIO.read(new File("image/arrow.png"));
            tempIm = temp.getScaledInstance(55, 55, Image.SCALE_SMOOTH);
        } catch (IOException e) {

            e.printStackTrace();

        }

但是它显示以下内容:

SEVERE: javax.imageio.IIOException: Can't read input file! at javax.imageio.ImageIO.read(ImageIO.java:1275) at CertificateDraw.doGet(CertificateDraw.java:36)

我试图以所有可能的方式更改File对象的路径,即使图像的一部分仍被发送到浏览器,它也只会带来相同的问题。 所以问题出在ImageIO.read部分-我如何找到为什么它不加载图像?

我正在Eclipse中工作-servlet在src文件夹中。 该图像位于rot目录“ WebContent”下的“ image”文件夹中。

java.io.File中的相对路径是相对于当前工作目录(CWD)的。 这是在发出命令以启动Java运行时环境(在您的情况下是Web服务器)时当前打开的文件夹。 在Eclipse中启动服务器时,通常是项目的/bin文件夹。 您可以通过打印new File(".").getAbsolutePath()

但是您根本不应该依赖File中的相对路径。 不能从代码内部控制CWD。

因为它已经在webcontent文件夹中,所以只需通过ServletContext#getResourceAsStream()来获取它。

InputStream input = getServletContext().getResourceAsStream("/image/arrow.png");
BufferedImage image = ImageIO.read(input);
// ...

注意, getServletContext()继承自HttpServlet扩展的GenericServlet类,因此您无需自己提供方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM