AdSense

網頁

2018/6/18

Java WebApp javax.imageio.IIOException: Can't read input file!

當在Java程式中使用ImageIO.read(File file)讀取指定路徑的圖片時發生錯誤如下。

BufferedImage image = ImageIO.read(new File("/img/001.png"));

javax.imageio.IIOException: Can't read input file!

錯誤原因是找不到圖片。在Java網路應用程式(Web app)的ContextPath和檔案路徑(file path)是不同的東西,而File傳入的是檔案路徑。

當你把圖片放在IDE(eclipse)專案的webapp/img/001.png,實際上部屬後運行時的檔案位置是在Tomcat中(開發時可能或在Eclipse的workspace下,依Server的設定而定),所以在runtime圖片的位置實際上是在
[workspace]\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\[project_name]\img
,但new File("img/001.png")的圖片位置其實是C:\img\001.png,所以就找不到圖片而導致錯誤。


參考:

沒有留言:

AdSense