资讯专栏INFORMATION COLUMN

java项目中的classpath到底是什么

novo / 305人阅读

摘要:项目中的到底是什么在项目中,你一定碰到过,通常情况下,我们是用它来指定配置资源文件的路径。项目发布后的目录结构我们使用对项目进行打包,一种是包,一种是的文件夹,包解压后就是了。

java项目中的classpath到底是什么

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

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

开发时期的web项目结构

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

classpath用在哪里了?

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

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

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

web项目发布后的目录结构

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

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

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/下任意层的目录,只要符合后面的文件路径,都会被作为资源文件找到。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/76533.html

相关文章

  • Java 项目classpath 具体指那个路径?

    摘要:只知道把配置文件如等放到目录就是存放代码文件的目录,然后使用来读取,都放到目录准没错,那么到底到底指的什么位置呢路径下的文件在编译后会放到路径下吧。默认的是在这里。如果单元测试的话,可以在启动或者运行的选项里指定的路径的。 只知道把配置文件如:mybatis.xml、spring-web.xml、applicationContext.xml等放到src目录(就是存放代码.java文件的...

    simon_chen 评论0 收藏0
  • Gecco的网络爬虫例子

    摘要:到了这个时候,我们已经可以把京东的分类首页的手机模块给抓取下来,并且保存成。 GeccoSpider爬虫例子 前些天,想要用爬虫抓取点东西,但是网上很多爬虫都是使用python语言的,本人只会java,因此,只能找相关java的爬虫资料,在开源中国的看到国内的大神写的一个开源的爬虫框架,并下源码研究了一下,发现跟官网描述的一样,够简单,简洁易用!有兴趣的朋友可以到官网了解下! 我这个例...

    raoyi 评论0 收藏0
  • Gecco的网络爬虫例子

    摘要:到了这个时候,我们已经可以把京东的分类首页的手机模块给抓取下来,并且保存成。 GeccoSpider爬虫例子 前些天,想要用爬虫抓取点东西,但是网上很多爬虫都是使用python语言的,本人只会java,因此,只能找相关java的爬虫资料,在开源中国的看到国内的大神写的一个开源的爬虫框架,并下源码研究了一下,发现跟官网描述的一样,够简单,简洁易用!有兴趣的朋友可以到官网了解下! 我这个例...

    Hydrogen 评论0 收藏0
  • 读懂 Gradle 的 DSL

    摘要:简单介绍构建由和组成,保存项目的属性,例如,版本号,代码文件位置。介绍一下什么是,是的缩写,既领域专用语言。的专门用于配置项目的构建,不能做其他工作,而像这些就属于通用语言,可以做任何工作。就是通过添加了一个配置来实现的。现在 Android 开发免不了要和 Gradle 打交道,所有的 Android 开发肯定都知道这么在 build.gradle 中添加依赖,或者添加配置批量打包,但是真...

    番茄西红柿 评论0 收藏0
  • Java开发环境的配置

    摘要:第一阶段基础知识第一章开发环境的配置知识铺垫命令在正式进入学习之前我们来了解一个看起来格很高的东西命令命令,计算机术语,是指操作系统的命令,是一种面向磁盘的操作命令,主要包括目录操作类命令磁盘操作类命令文件操作类命令和其它命令。 showImg(https://segmentfault.com/img/remote/1460000019264541?w=600&h=242); 第一阶段...

    leejan97 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<