美文网首页
classpath类路径详细分析

classpath类路径详细分析

作者: 再闹砸你家窗户 | 来源:发表于2017-11-22 10:46 被阅读0次
       最近在做一个功能,需要通过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类路径详细分析

          本文链接:https://www.haomeiwen.com/subject/xvknvxtx.html