我已经创建了一个基于JavaEE的Web应用程序,然后我将其作为WAR文件导出并部署到在VM上运行的tomcat服务器。HTTP状态500 - 无法读取输入文件
该应用程序允许用户将映像上传到vm磁盘上的某个位置,然后运行一个图像处理类,该类接受先前上传的文件的路径。
我正在尝试使用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
这是一个关于ImageIO.read的问题,带有项目的部署WAR? 应用程序是否无法从位于vm上的路径读取图像?
任何有关这个问题的解决方案的指导将不胜感激。
把一个破发点中的'sobelFilter'方法和检查'input'。这很可能是错误的。 – VHS
您必须配置Tomcat以提供外部静态数据。请参考这个。 [链接](http://www.moreofless.co.uk/static-content-web-pages-images-tomcat-outside-war/) –
@PGH也希望这个帮助[链接](http:// stackoverflow。 com/questions/1812244/simplest-way-to-serve-static-data-from-application-server-in-a-java) –