idea路徑問題(classloader讀取文件)

今天碰到一個很嚴重的問題,idea讀取配置文件路徑不管怎麼寫,都是不正確的,我也很納悶。我的項目目錄是這樣的:

首先,getResourceAsStream方法需要寫相對路徑,那麼就要搞清楚,是相對誰?

如上圖所示,相對的是Output directory裏設置的路徑,一定要注意!

第一種讀取辦法:ServletContext讀取web工程下的資源

InputStream is = context.getResourceAsStream("file/config.properties");

第二種辦法:通過classloader去獲取web工程下的資源

InputStream is = this.getClass().getClassLoader()
        .getResourceAsStream("file/config.properties");

但這樣讀不到配置文件,我不知道具體原因,花了將近兩小時,用谷歌在一個國外的論壇上找到了解決辦法(多虧有道翻譯)。

具體是這樣操作的:

也可以這樣:

把file添加到項目根目錄了,然後可以這樣寫,就能用classloader讀取配置文件了。這樣做的原因是:類加載器在WEB-INF/classes目錄下,不這樣做,config.properties是不會被加載到classes下面的。

InputStream is = this.getClass().getClassLoader()
        .getResourceAsStream("config.properties");

idea的路徑真的很迷很迷,可能這個解決了,下一個不知道又會出現什麼問題,我現在也沒有完全搞懂,只是有了暫時的解決辦法。

總結:

相對路徑:相對的是

使用類加載器時,路徑相對的是:

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