zoukankan      html  css  js  c++  java
  • SpringBoot中的classpath

    一句话总结:classpath 等价于 main/java + main/resources + 第三方jar包的根目录。下面详细解释。

    首先,classpath顾名思义,是编译之后项目的路径,而不是对源程序的路径描述。但是它与源程序的一些路径是相互对应的,存在映射关系。

    需要介绍一下package打包、build 之间的关系及特点:

    1. ​ 不管是build还是package,都不会把项目中使用的第三方jar包也一起打进去。

    2. build生成了如下的目录:
      在这里插入图片描述

      由图可以看出,build将项目进行编译,main/java下的源程序、resource下的静态资源一起打包到了target/classes目录。而package也差不多:

    在这里插入图片描述
    这里的target/classes和jar包根路径 都属于所谓的 classpath,也就是根路径。

    1. 打包和构建都会在根路径下创建META-INF文件夹,如果在resource文件夹中再创建一个META-INF文件夹,并在该文件夹中建立其他的静态资源,这些自己创建的静态资源在打包或构建时也会一起打包到classpath:/META-INF文件夹下。

    2. 知道了这一特性之后就可以解释项目中对webjars下的静态资源引用的问题了。以jQuery为例:webjars官方将jQuery.js文件放到resources/META-INF/resources/webjars/中,然后将项目打包并发布,就有了我们需要的jar包。我们回忆一下如果要引用一般的jar包内的类需要怎么操作呢?import ort.xxx.xxx,这里的 “org.xxx ” 其实就是"classpath:/org.xxx.xxx";这个jQuery的jar包是一样的道理:

      在这里插入图片描述

      要引用jquery,只需要引用META-INF/resources/xxx,这句话的其实就是在说classpath:/META-INF/ resouces/…因此我们还可以了解到,实际上所有External Libraries中的jar包也属于classpath根路径。当SpringBoot检索资源时,“/”就代表了从根路径搜索,而搜索的范围包括:main/java、main/resources、第三方jar包的根目录。

  • 相关阅读:
    [windows phone开发]新生助手的开发过程与体会三
    安卓真机调试 出现Installation error: INSTALL_FAILED_UPDATE_INCOMPATIBLE....
    Easyui columns列图片移位问题!!!
    Easyui 去掉datagrid 行的样式,并点击checked 改边行颜色!
    安卓手机 虚拟键盘输入用 position:fixed解决 !!!
    Linux下用Perl产生新的EXCEL文档 zhumao
    在 Perl 中使用内联 zhumao
    牛郎织女 zhumao
    打开.bz2文件 zhumao
    perl中的特殊内置变量(转) zhumao
  • 原文地址:https://www.cnblogs.com/eden-libinglin/p/13831822.html
Copyright © 2011-2022 走看看