如何在java中獲取圖像路徑?我想在jsp中顯示圖像,我想給路徑像「/images/logo.jpg」,但它執行頁面時得到空指針異常。如何獲取圖像絕對路徑?
如果我給完整路徑,它就像「d:/project/images/logo.jsp」一樣工作。如何以絕對路徑顯示圖像?
如何在java中獲取圖像路徑?我想在jsp中顯示圖像,我想給路徑像「/images/logo.jpg」,但它執行頁面時得到空指針異常。如何獲取圖像絕對路徑?
如果我給完整路徑,它就像「d:/project/images/logo.jsp」一樣工作。如何以絕對路徑顯示圖像?
而不是/images/logo.jpg
把images/logo.jpg
即刪除第一個斜槓。
Image image = Image.getInstance(「images/logo.jpg」); 使用itext的pdf生成代碼。 – Rose 2010-07-08 16:10:27
然後你必須做一些像 URL imgURL = getClass()。getResource(「images/logo.jpg」); Image img = new ImageIcon(imgURL).getImage(); – 2010-07-08 16:30:25
儘量避免在java.io
內使用相對路徑。任何相對路徑都是相對於當前工作目錄而言的,這個目錄取決於你如何啓動應用程序的方式,並且不能從代碼中控制。當例如開始時,一個Tomcat服務,它將相對於c:/path/to/tomcat/bin
。在Eclipse中運行時,它將相對於c:/path/to/eclipse/project/bin
。在命令控制檯中運行時,它將相對於當前打開的文件夾。等等。你不想依賴那個。餿主意。
在JSP/Servlet的web應用的情況下,基本上有兩種方式來獲得絕對資源路徑以可靠的方式使用相對路徑:
從運行時類路徑(那裏有所有的檢索類和庫):
ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
String path = classLoader.getResource("/images/logo.jpg").getPath();
從web內容(那裏有所有的JSP文件和檢索文件夾都):
ServletContext context = getServletContext(); // Inherited from HttpServlet.
String path = context.getResource("/images/logo.jpg").getPath();
如果你最終要的是一個InputStream
出來的,你也許intented使用new FileInputStream(path)
創造,那麼你就應該使用getResourceAsStream()
方法代替:
從類路徑:
InputStream content= classLoader.getResourceAsStream("/images/logo.jpg");
或者web內容:
InputStream content = context.getResourceAsStream("/images/logo.jpg");
最後!我一直在尋找這個答案近4個小時..!根本沒有人談論過「ClassLoeader」或「ServletContext」。謝謝! – 2013-11-01 16:35:19
如果你使用 「圖像/ logo.jpg」,所以是相對路徑? – Fosco 2010-07-08 15:55:52
你是指相對路徑?嘗試省略第一個斜槓,看看是否有效。 (編輯:Fosco:jinx!) – 2010-07-08 15:56:44