介绍
classpath是java运行时环境搜索类和其他资源文件(比如jar\zip等资源)的路径。可以通过JDK工具(比如javac命令、java命令)后面的-classpath 参数设置classpath。
重点:
1.使用-classpath:当你要编译或执行的类引用了其它的类,但被引用类的.class文件不在当前目录下时,就需要通过-classpath来引入类;
2.指定路径:当你要编译的类所在的目录和你执行javac命令的目录不是同一个目录时,就需要指定源文件的路径(CLASSPATH是用来指定.class路径的,不是用来指定.java文件的路径的)
3.classpath就是class的path,也就是类文件(*.class)的路径
理解
src/main/下的java和resources这两个文件夹都被编译打包到了classes/目录下,它就是我们要找的classpath。(classpath指向的就是打war/jar包之后的classes的位置)
注意: 在idea开发工具中,可以指定src下面的其他文件夹,如common、test文件夹(同main文件夹同级)设置为source root,这样的文件夹也会被编译到classpath中(在classes目录下),所以会有一些项目目录结构奇形怪状,非常态化,但是万变不离其宗,希望大家能够深刻理解到这个classpath的意义。
使用
1. JAVA获取classpath路径,调用方式
this.getClass().getResourceAsStream(String name);
获取流,静态化方法中则使用
ClassLoader.getSystemResourceAsStream (String name);
上述方式大家大多数用于读取路径下的静态配置文件properties等,如jdbc.properties
此处本人喜欢的一个工具包hutool.jar,有兴趣的可以去看下hutool。里面有强大的基础工具封装,可以直接通过Props类获取资源文件。
2.使用classpath:这种前缀,就只能代表一个文件;使用classpath*:这种前缀,则可以代表多个匹配的文件。
用法1:classpath:xxxx.xml (匹配单文件)
用法2:classpath*:**/mapper/*Mapper.xml (匹配多文件)