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包中的組織方式,同時構造函數的參數不要以“/”開頭,應該使用相對路徑。

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