3

/header在 Netbeans 的网页目录中创建了一个文件夹,并添加了一个名为header.png. 现在我想使用以下代码在 servlet 中访问此图像文件:

BufferedImage image = ImageIO.read(getClass().getResource(" /header/header.png"));

但这没有发生,它给出了以下错误:

java.lang.IllegalArgumentException:输入 == 空!

下面是我的项目的目录结构:

在此处输入图像描述

这个错误是如何引起的,我该如何解决?

4

1 回答 1

1

从类路径返回资源,而Class#getResource()不是从公共 Web 内容。

你需要ServletContext#getResource(),或者更好,getResourceAsStream()而不是。

BufferedImage image = ImageIO.read(getServletContext().getResourceAsStream("/header/header.png"));

(请注意,我也从路径中删除了尾随空格)

请注意,有些用户可能会建议您使用ServletContext#getRealPath(),但在这种特殊情况下您不应该使用它,因为null当容器配置为将部署的 WAR 扩展到内存而不是本地磁盘文件系统时,可能会返回。

也可以看看:

于 2012-11-30T14:58:31.937 回答