classpath類路徑詳細(xì)分析

   最近在做一個(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")
?著作權(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ù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容