zoukankan      html  css  js  c++  java
  • java项目中的classpath到底是什么

    java项目中的classpath到底是什么

                          --摘自https://segmentfault.com/a/1190000015802324

    在java项目中,你一定碰到过classpath,通常情况下,我们是用它来指定配置/资源文件的路径。在刚开始学习的时候,自己也糊里糊涂,但是现在,是时候弄清楚它到底是指什么了。

    顾名思义,classpath就是class的path,也就是类文件(*.class的路径)。一谈到文件的路径,我们就很有必要了解一个java项目(通常也是web项目)它在真正运行时候,这个项目内部的目录、文件的结构;这样,我们才好分析、理解classpath。

    开发时期的web项目结构

    下面,我以一个ssm的项目为例,我先把开发时候的项目的目录结构图放出来。根据maven的约定,一般我们的项目结构就像下面这样。

    clipboard.png

    classpath用在哪里了?

    而我们经常用到classpath的地方,就是在指定一些配置/资源文件的时候会使用到。比如说,我们在web.xml中指定springmvc的配置文件,如下图,我们使用:classpath:entry/dev/spring-mvc.xml;再比如,当我们把*Mapper.xml文件放在了main/java/../mapping/文件夹下时,在mybatis的配置文件中配置其位置,我们使用:

    classpath*:**/mapper/mapping/*Mapper.xml

    clipboard.png

    clipboard.png

    很显然,上面这2个classpath的配置,是为了告诉配置文件,去哪里寻找我们要指定的配置文件。要想弄清楚为什么是上面这样写的,我们就要来看看项目运行时(或者是发布后)的目录结构了。

    web项目发布后的目录结构

    我们使用IDEA对项目进行打包,一种是war包,一种是explorer的文件夹,war包解压后就是explorer了。我们来对解压后的目录结构进行分析。

    clipboard.png

    经过对比,我们要注意到,开发时期的项目里,src/main/下面的javaresources文件夹都被(编译)打包到了生产包的WEB-INF/classes/目录下;而原来WEB-INF下面的views和web.xml则仍然还是在WEB-INF下面。同时由maven引入的依赖都被放入到了WEB-INF/lib/下面。最后,编译后的class文件和资源文件都放在了classes目录下。

    clipboard.png

    classpath原来是这个

    在编译打包后的项目中,根目录是META-INFWEB-INF 。这个时候,我们可以看到classes这个文件夹,它就是我们要找的classpath。

    在第1个例子里,classpath:entry/dev/spring-mvc.xml 中,classpath就是指WEB-INF/classes/这个目录的路径。需要声明的一点是,使用classpath:这种前缀,就只能代表一个文件

    在第2个例子里,classpath*:**/mapper/mapping/*Mapper.xml,使用classpath*:这种前缀,则可以代表多个匹配的文件**/mapper/mapping/*Mapper.xml,双星号**表示在任意目录下,也就是说在WEB-INF/classes/下任意层的目录,只要符合后面的文件路径,都会被作为资源文件找到。

  • 相关阅读:
    Enterprise Solution 界面设计规范
    大型.NET商业软件代码保护技术 技术与实践相结合保护辛苦创造的劳动成果
    开源WinForms界面开发框架Management Studio 选项卡文档 插件 Office 2007蓝色风格 后台线程
    解析Visual Studio 2015促进生产力的10个新功能
    LLBL Gen Pro 4.2 Lite 免费的对象关系映射开发框架与工具
    Windows Server 2012部署Enterprise Solution 5.4
    ASP.NET MVC:some benefits of asp.net mvc
    Python:Opening Python Classes
    ASP.NET MVC:4 Ways To Prevent Duplicate Form Submission(转载)
    架构:The Onion Architecture : part 3(洋葱架构:第三篇)(转载)
  • 原文地址:https://www.cnblogs.com/zhangfengshi/p/11375475.html
Copyright © 2011-2022 走看看