我在Netbeans的网页目录中创建了一个/header
文件夹,并添加了一个名为header.png
的图像。现在我想使用以下代码在servlet中访问此图像文件:
BufferedImage image = ImageIO.read(getClass().getResource(" /header/header.png"));
但是这没有发生,它会出现以下错误:
java.lang.IllegalArgumentException:input == null!
以下是我项目的目录结构:
如何导致此错误?如何解决?
答案 0 :(得分:1)
Class#getResource()
从类路径返回资源,而不是从公共Web内容返回。
您需要ServletContext#getResource()
,或更好,getResourceAsStream()
。
BufferedImage image = ImageIO.read(getServletContext().getResourceAsStream("/header/header.png"));
(请注意,我也从路径中删除了尾随空格)
请注意,某些用户可能会建议您使用ServletContext#getRealPath()
,但在此特定情况下不应使用它,因为当容器配置为将已部署的WAR扩展到内存时,可能会返回null
而不是本地磁盘文件系统。