簡體   English   中英

在Java動態Web項目中找不到圖像

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM