Jar包内读取配置文件

1. 获取Jar包的相对路径

    关于此话题,网上众说纷纭。经尝试,下面的方法是OK的。

    1. xxx.class.getResource("filename")

    这里的filename是基于xxx的class文件的相对路径。如果filename写“”,返回.class文件的路径。

    2. xxx.class.getResource("/filename")

    这里的filename是不依赖于xxx的绝对路径的,也就是以jar包所在目录为相对路径。如果参数写的是“/”,返回null。

    无论是1,还是2,调用.getFile()获得的路径名称,(一般里面都有个感叹号,)以参数传入File类似的构造方法都是无效的,比如传送给spring的ClassPathXmlApplicationContext。如果想读取,需要使用getResourceAsStream,绕过File,以流的方式读取。(URI的方式没有尝试)

    不要直接调用Classloader的getResource方法,不论是从哪个类里面getClassLoader得到的。

   

2. ClassPathXmlApplicationContext调用的时候报告找不到文件

    如果xml文件成功打到jar包里面,肯定是在classpath中的。解决找不到文件的方法是解压jar包,查看xml文件在jar包中的组织方式,同时构造函数的参数不要以“/”开头,应该使用相对路径。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章