我创建了一个基于JavaEE的Web应用程序,然后将其导出为WAR文件并部署到在vm上运行的tomcat服务器。
应用程序允许用户将图像上传到虚拟磁盘上的某个位置,然后运行一个图像处理类,该类接受以前上传文件的路径。
我正在尝试使用ImageIO.read()将文件作为缓冲图像读入。
在IDE中运行时,图像处理类工作正常,能够接受存储在磁盘上的图像并输出处理过的图像。但是,当它作为已部署的Web应用程序访问时,我遇到了错误:
HTTP Status 500 - Can't read input file!
type Exception report
message Can't read input file!
description The server encountered an internal error that prevented it from fulfilling this request.
exception
javax.imageio.IIOException: Can't read input file!
javax.imageio.ImageIO.read(Unknown Source)
upload.servlet.resizeImageAndSaveSobel2.sobelFilter(resizeImageAndSaveSobel2.java:22)
upload.servlet.resizeImageAndSaveSobel2.processImage(resizeImageAndSaveSobel2.java:14)
upload.servlet.RunTongue.doPost(RunTongue.java:24)
javax.servlet.http.HttpServlet.service(HttpServlet.java:648)
javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
note The full stack trace of the root cause is available in the Apache Tomcat/9.0.0.M13 logs.
这是代码,它是读取上传图像的图像处理类的一部分:
public void sobelFilter(String input, String output) throws IOException {
File inputFile = new File(input);
BufferedImage img = ImageIO.read(inputFile);
ImageReader ir = new ImageReader();
BufferedImage sobelImg = ir.greyscale(img);
File outputFile = new File(output);
ImageIO.write(sobelImg, "jpg", outputFile);
}
输入文件字符串如下:C:/ Users / SRCMIPS / Desktop / M2 / Image Upload / PatientImage.jpeg
对于带有项目部署WAR的ImageIO.read,这是一个问题吗? 应用程序无法从位于虚拟机上的路径读取图像吗?
对于解决这个问题的任何指导都将不胜感激。
答案 0 :(得分:0)
VM是您系统的外部。您需要在项目中基本创建一个图像文件夹并将其读取(/ project name / lib name / image name)。
另请参阅此stackoverflow问题,讨论此问题: imageio.IIOException: Can't read input file