起
看到项目中有的用classpath,有的用classpath*,觉得很迷惑,查找网上资料表示classpath*会继续查找jar包中的classpath下的资源,没太明白,举得例子也不太对,于是自己测试一下
中
classpath是什么
classpath就是class的path,也就是类文件(*.class)的路径,就是resource目录,java实际执行的是.class文件,所以需要知道class文件的路径,从路径下去找对应的class文件。
可以将当前项目打包,然后放到lib目录下,右键make as library,作为依赖,解压,点开就看到如下目录,其中classes存放的就是编译后的class文件以及resource目录下的其他文件:
(这里因为idea自己反编译了,所以显示的java文件)
测试
新建两个class1.properties文件和class2.properties文件在resource文件下面,
然后将该项目打包,把jar包放到该项目的lib目录下面,作为依赖,也会打包这两个properties文件。
现在我当前项目的resource文件下有两个properties,依赖的jar包下也有两个priperties,
测试开始:
测试一(classpath):
public class MyTest {
public static void main(String[] args) throws IOException {
Resource[] resources = new PathMatchingResourcePatternResolver().getResources("classpath:/**/class*.properties");
System.out.println(resources.length);
}
}
结果:可以看到是本项目的两个properties文件
测试二(classpath*):
public class MyTest {
public static void main(String[] args) throws IOException {
Resource[] resources = new PathMatchingResourcePatternResolver().getResources("classpath*:/**/class*.properties");
System.out.println(resources.length);
}
}
结果(把jar包中的properties文件也读出来了):