如何从Netbeans上的Servlet中的项目类路径获取图像

时间:2012-11-30 14:20:31

标签: java image servlets

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

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

但是这没有发生,它会出现以下错误:

  

java.lang.IllegalArgumentException:input == null!

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

enter image description here

如何导致此错误?如何解决?

1 个答案:

答案 0 :(得分:1)

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

您需要ServletContext#getResource(),或更好,getResourceAsStream()

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

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

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

另见: