来自:http://blog.csdn.net/cutesource/archive/2011/01/15/6141768.aspx
首先一点很重要,Java中不存在标准的相对路径,各种相对路径取资源的方式都是基于某种规则转化为绝对路劲
然后一点也很重要,绝对不要直接使用绝对路径,否则死得很难看
基于以上两点,总结Resource路径问题无非归结为一点:找基点,也就是在某种环境下(web、j2ee或jar包等)通过合适的方式找到一个稳定的基点,然后通过这个基点找到你要的resource
Java中的基点有哪些呢?大致总结一下有以下几种:
1)classpath
如果你要找的资源在classpath下,那么通过classpath这个基点是比较合适的,而取得这个基点方式主要是通过ClassLoader来,具体方法就是
ClassLoader.getResource(String name),而取得ClassLoader的方式很多,比如:
-
Thread.currentThread().getContextClassLoader()
-
clazz.getClassLoader()
-
ClassLoader.
getSystemClassLoader()
ClassLoader找resource的实现原理就是先递归在parent
classLoader中从所在classpath里加载resource(最终如何加载JDK未开源),如果所有层级的classLoader都未找
到,则调用findResource方法来找,而这个方法是暴露给自制classLoader来现实的,因此给了在classpath之外加载
resource的机会。
2)
当前用户目录
就是相对于System.getProperty("user.dir"
)返回的路径,
对于一般项目,这是项目的根路径。对于JavaEE服务器,这可能是服务器的某个路径。这个并没有统一的规范!
然而,
默认情况下,java.io 包中的类总是根据当前用户目录来分析相对路径名,如new File("xxx"),就是在
System.getProperty("user.dir"
)路径下找xxx文件。因此,通过这种方式来定位文件可能会出现移植问题。
3)
Web应用程序的根目录
在Web应用程序中,我们一般通过ServletContext.getRealPath("/"
)方法得到Web应用程序的根目录的绝对路径。
掌握了上面几个基点,就能很轻松得定位你要找的resource,只不过要清晰地认识到不要只图一时快活,而不管将来移植的死活,要确保能任何环境下(j2se or web,windows or linux)不出问题。
分享到:
相关推荐
主要介绍了 Java Resource路径整理总结的相关资料,需要的朋友可以参考下
基本概念的理解绝对路径:绝对路径就是你的主页上的文件或目录在硬盘上真正的路径,(URL和物理路径)例如:C:xyz est.txt 代表了test.txt文件的绝对路径。http://www.sun.com/index.htm也代表了一个URL绝对路径。相对...
主要介绍了Java使用路径通配符加载Resource与profiles配置使用详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
这是因为通过class.getResource()方法在IDEA中运行的路径和生成jar包获取的的路径是不同的。打成jar包后,获取图片的路径中有"xxx.jar!"这里面的内容是不能够被操作系统识别出来的,因此直接通过路径来获取文件是不...
主要介绍了JAVA获取文件绝对路径的方法,涉及针对文件路径的操作技巧,需要的朋友可以参考下
(1)、request.getRealPath(“/”);//不推荐使用获取工程的根路径 (2)、...//获取工程的根路径,这个方法比较好用,可以直接在servlet和jsp中使用 (4)、 this.getClass().getClassLoader().getResource(“”).getPath();
用于在类路径中搜索资源(例如类或文件)的Java工具。 拖放界面,用于将新的jar添加到您的搜索路径。 对于解决那些未找到类的问题(例如java.lang.ClassNotFoundException和java.lang.NoClassDefFoun)很有用
Java路径中的空格问题 1、 URLTest.class.getResource(/).getPath(); URLTest.class.getResource(/).getFile(); URLTest.class.getClassLoader().getResource().getPath(); Thread.current...
如何解决java html转pdf图片不显示问题的源码范例(由浅入深代码范例和详细说明)
// Resource resource = new ClassPathResource("appcontext.xml"); // BeanFactory factory = new XmlBeanFactory(resource); // 用classpath路径 // ApplicationContext factory = new ...
2.在resource目录下的dbconfig.properties文件,在这里修改生成配置,主要修改一些路径和包名 3.确认好路径正确后,就可以开始生产三层和mapper了。 4.生成方法,调用com.edu.cn.beetlUtil.beetl这里面的main方法...
01、设置文件路径resource/filePath.properties #补丁存放路径 toFileURL=C:/Users/02/Desktop #工程源码所在目录 fromFileURL=F:/workspace #工程名称 proNanme=brd_boss 02、设置升级的文件列表resource/...
java类所在工程路源代码String path=this.getClass().getResource("/").getPath(); xmlpath=xmlpath.replaceAll( "%20"," ");
3.如果是eclipse开发工具,上传之后的文件保存在路径D:\develop\resource\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\UploadAndDownload\WEB-INF\upload 4.其中D:\develop\resource为项目所在...
主要介绍了springboot如何获取相对路径文件夹下静态资源的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
其他的 Java 平台规范 .......................................................................................................................................3 其他重要参考资料 ............................
今天小编就为大家分享一篇关于Springboot项目打war包docker包找不到resource下静态资源的解决方案,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
百度翻译源码java Auto translation Android resource strings.xml jar util. personal translation ...一个能批量自动翻译Android资源文件的java...指定原文件路径,一次只能指定一个源文件。 -h --help Get help infor
需要配置cors全称是"跨域资源共享"(Cross-origin resource sharing)。以tomcat为例子在 一. 在tomcat的lib目录下添加jar包cors-filter-1.5.0.1.jar,java-property-utils-1.9.jar 二. tomcat路径下conf/web.xml...
1.2.1 URL简介 URL 是 UniformResource Locator 的缩写,表示统一资源定位器,它是专为标识网络上的资源位置而设定的一种编码地址方式,即俗称:网址。 URL组成:应用层协议、主机 IP 地址或域名、协议端口号、资源...