![](/img/trans.png)
[英]Cannot find a resource file, after exporting java project as JAR, and trying to use it in a Dynamic Web Project in ECLIPSE
[英]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.