> 文章列表 > classpath和classpath*的区别(实际例子)

classpath和classpath*的区别(实际例子)

classpath和classpath*的区别(实际例子)

看到项目中有的用classpath,有的用classpath*,觉得很迷惑,查找网上资料表示classpath*会继续查找jar包中的classpath下的资源,没太明白,举得例子也不太对,于是自己测试一下

classpath是什么

classpath就是class的path,也就是类文件(*.class)的路径,就是resource目录,java实际执行的是.class文件,所以需要知道class文件的路径,从路径下去找对应的class文件。
可以将当前项目打包,然后放到lib目录下,右键make as library,作为依赖,解压,点开就看到如下目录,其中classes存放的就是编译后的class文件以及resource目录下的其他文件:
classpath和classpath*的区别(实际例子)
(这里因为idea自己反编译了,所以显示的java文件)

测试

新建两个class1.properties文件和class2.properties文件在resource文件下面,
classpath和classpath*的区别(实际例子)
然后将该项目打包,把jar包放到该项目的lib目录下面,作为依赖,也会打包这两个properties文件。
classpath和classpath*的区别(实际例子)
现在我当前项目的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和classpath*的区别(实际例子)
测试二(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文件也读出来了):
classpath和classpath*的区别(实际例子)