最近在做一個功能,需要通過ip獲取當前用戶所在的城市和和省份,需要讀取一個Geolite.mmdb的文件,該文件需要放在工程內部,通過相對路徑來加載。折騰了半天才搞定,原因是對classpath不理解,特整理了一些classpath的相關知識,希望能幫助到一些和我一樣的新手。
開門見山:classpath是指打包后WEB-INF文件夾下的classes目錄。
典型的war包內部結構如下:
webapp.war
|— index.jsp //健康檢查文件
|— META-INF //maven自動生成目錄
|— WEB-INF //必含
|— web.xml // WAR包的描述文件
|— classes //classpath
|— lib //依賴的jar包
WEB-INF是資源目錄,客戶端不能直接訪問,不過現在的ide編譯器在編譯時會把src目錄下的非java文件移到WEB-INF/classes下面。所以Resource目錄下的資源都會被打包到/WEB-INF/classes文件夾下。
classes目錄是一個定位資源的入口,里面存放的文件類型大致可以分為幾類:
(1)存放項目中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類路徑詳細分析
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
- 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
- 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
- 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
推薦閱讀更多精彩內容
- 正確配置如下:Windows(分隔符英文分號):XML/HTML code bootclasspath ${jav...
- 新加入一個項目,clone了代碼,maven編譯報錯:在類路徑或引導類路徑中找不到程序包 java.lang Wh...