如何获取图像绝对路径?
如何在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