最近在做一個(gè)功能,需要通過ip獲取當(dāng)前用戶所在的城市和和省份,需要讀取一個(gè)Geolite.mmdb的文件,該文件需要放在工程內(nèi)部,通過相對(duì)路徑來加載。折騰了半天才搞定,原因是對(duì)classpath不理解,特整理了一些classpath的相關(guān)知識(shí),希望能幫助到一些和我一樣的新手。
開門見山:classpath是指打包后WEB-INF文件夾下的classes目錄。
典型的war包內(nèi)部結(jié)構(gòu)如下:
webapp.war
|— index.jsp //健康檢查文件
|— META-INF //maven自動(dòng)生成目錄
|— WEB-INF //必含
|— web.xml // WAR包的描述文件
|— classes //classpath
|— lib //依賴的jar包
WEB-INF是資源目錄,客戶端不能直接訪問,不過現(xiàn)在的ide編譯器在編譯時(shí)會(huì)把src目錄下的非java文件移到WEB-INF/classes下面。所以Resource目錄下的資源都會(huì)被打包到/WEB-INF/classes文件夾下。
classes目錄是一個(gè)定位資源的入口,里面存放的文件類型大致可以分為幾類:
(1)存放項(xiàng)目中src目錄下的編譯文件;
(2)存放各種資源配置文件:log4j.properties
(3)存放各種模板文件:some.ftl
java中獲取類路徑的方法,可以通過類加載器:Class.getClassLoader().getResource("").getPath()
例如:放置resources目錄下common/GeoLite2-City.mmdb文件,可以通過如下方式獲取它的資源路徑:
String path = Class.getClassLoader().getResource("").getPath + "common/GeoLite2-City.mmdb"
Spring中引用classpath路徑下的文件,只需要在文件名前加上classpath。如:
@PropertySource("classpath:conf/webapp.properties")
classpath類路徑詳細(xì)分析
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
相關(guān)閱讀更多精彩內(nèi)容
- 正確配置如下:Windows(分隔符英文分號(hào)):XML/HTML code bootclasspath ${jav...
- 新加入一個(gè)項(xiàng)目,clone了代碼,maven編譯報(bào)錯(cuò):在類路徑或引導(dǎo)類路徑中找不到程序包 java.lang Wh...
- 老友安來電話的時(shí)候,我正被一篇稿子搞得焦頭爛額。滿腔的悶氣還在胸中回蕩,卻在放下電話的瞬間像被施了魔法般變得像棉花...
- 昨天逛街的時(shí)候,看到一個(gè)姑娘,穿一身名牌,背著一個(gè)奢侈品包包,站在街上沖著一個(gè)看起來五十多歲的老婦人大吵大叫。而我...