如何在java中获取图像路径?
我正在使用eclipse,我想在jsp中显示图像,我想提供类似“/images/logo.jpg”的路径,但是在执行页面时它会获得nullpointer异常。
如果我给出了完整路径,它的工作方式就像“d:/project/images/logo.jsp”。如何以绝对路径显示图像?
答案 0 :(得分:4)
您应该尽可能避免在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();
从 webcontent (所有JSP文件和/WEB-INF
文件夹所在的位置)检索它:
ServletContext context = getServletContext(); // Inherited from HttpServlet.
String path = context.getResource("/images/logo.jpg").getPath();
如果您最终想要的是InputStream
,而您可能希望使用new FileInputStream(path)
创建,那么您应该使用getResourceAsStream()
方法:
来自classpath:
InputStream content= classLoader.getResourceAsStream("/images/logo.jpg");
或webcontent:
InputStream content = context.getResourceAsStream("/images/logo.jpg");
答案 1 :(得分:1)
而不是/images/logo.jpg
put images/logo.jpg
,即删除第一个斜杠。