这三个都会有自己的概念域,详细罗列下各自的概念域的内容:
1.环境变量的classpath相关:在配置java环境变量时,需要配置以下三个内容:
- JAVA_HOME:指明JDK安装路径,就是刚才安装时所选择的路径,如 D:\java\jdk1.5.0_08
- PATH:使得系统可以在任何路径下识别java命令,如:%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin
- CLASSPATH:为java加载类(class or lib)路径,只有类在classpath中,java命令才能识别,设为: .;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar (要加.表示当前路径) %JAVA_HOME%就是引用前面指定的JAVA_HOME
2.web项目中的classpath:WEB应用中的classpath专指项目WEB-INF/classes和WEB-INF/lib,web容器在启动时会对WEB-INF/classes和WEB-INF/lib目录下的class文件、配置文件以及jar文件进行加载
- src路径下的文件在编译后会放到WEB-INF/classes路径下吧。默认的classpath是在这里。直接放到WEB-INF下的话,是不在classpath下的。用ClassPathXmlApplicationContext当然获取不到。如果单元测试的话,可以在启动或者运行的选项里指定classpath的路径的。
- 用maven构建项目时候resources目录就是默认的classpath
classPath即为java文件编译之后的class文件的编译目录一般为web-inf/classes,src下的xml在编译时也会复制到classPath下
ApplicationContext ctx = new ClassPathXmlApplicationContext("xxxx.xml"); //读取classPath下的spring.xml配置文件
ApplicationContext ctx = new FileSystemXmlApplicationContext("WebRoot/WEB-INF/xxxx.xml"); //读取WEB-INF 下的spring.xml文件 - 解释classes含义:
1.存放各种资源配置文件 eg.init.properties log4j.properties struts.xml
2.存放模板文件 eg.actionerror.ftl
3.存放class文件 对应的是项目开发时的src目录编译文件
总结:这是一个定位资源的入口
- web.xml 配置中classpath: 与classpath*:的区别:
classpath:只会到你的class路径中查找找文件,若存在相同的package+fileName的file,则会取第一个
classpath*:不仅包含class路径,还包括jar文件中(class路径)进行查找.
参考:
1.java项目里classpath具体指哪儿个路径:https://blog.csdn.net/u011095110/article/details/76152952/
2.Spring加载resource时classpath*:与classpath:的区别:https://blog.csdn.net/kkdelta/article/details/5507799
3.classpath:与classpath*:详细解析:https://blog.csdn.net/qq_36501591/article/details/80087984