2017-04-07 65 views
0

我已經創建了一個基於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上的路徑讀取圖像?

任何有關這個問題的解決方案的指導將不勝感激。

+0

把一個破發點中的'sobelFilter'方法和檢查'input'。這很可能是錯誤的。 – VHS

+0

您必須配置Tomcat以提供外部靜態數據。請參考這個。 [鏈接](http://www.moreofless.co.uk/static-content-web-pages-images-tomcat-outside-war/) –

+0

@PGH也希望這個幫助[鏈接](http:// stackoverflow。 com/questions/1812244/simplest-way-to-serve-static-data-from-application-server-in-a-java) –

回答

0

虛擬機在系統外部。您需要基本上在您的項目中創建一個圖像文件夾並讓它讀取(/項目名稱/庫名稱/圖像名稱)。

也請看到這個計算器的問題,討論這個問題: imageio.IIOException: Can't read input file

+0

感謝您的意見。項目中的圖像文件夾應該在哪裏?一旦我導出並部署了戰爭文件,它仍然可以訪問嗎? – PGH

+0

絕對是,只要將它想象成桌面應用程序中的傳統res文件夾,或者在css文件夾中引用css樣式表即可。同樣的原則適用。 – derekjgrove

相關問題