类路径
类路径classpath:指当前类加载器能加载到的所有jar包。
类路径查找
在类路径下查找:指在当前类加载能加载到的所有jar包中查找。
查找类:在类路径下查找一个类,编历所有jar包查找一个类,找到就返回。即使这个类在多个jar包中都有。先找到谁就返回谁。
查找资源:在类路径下查找一个资源,编历所有jar包查找一个资源,找到就返回。即使这个资源在多个jar包中都有。先找到谁就返回谁。
getClass().getResource("path")
当path以/开头,如/a/b/c.properties时,查找的路径为: classpath路径/path。
当path不以/开头时,如c.properties,查找的路径为:当前调用类的路径/path。
如:
则,代码为:
InputStream inputStream3= getClass().getResource("/com.phl.amodel/a.properties").openStream();
查找路径计算: classpath路径/path ,即:classpath/com.phl.amodel/a.properties
getClassLoader().getResource("path")
只在当前类路径下寻找: classpath:path
如a.properties放在
代码:
InputStream inputStream2= getClass().getClassLoader().getResource("com.phl.amodel/a.properties").openStream();
(不能用/开头)
查找路径计算:path=com.phl.amodel/a.properties
则查找路径为 classpath/com.phl.amodel/a.properties
当多个jar中都含有要查找的资源时,应该从哪个jar中查找
根据jar包的先后顺序加载满足path的资源
那jar包的顺序是怎么的呢?
如果是maven工程,则以在pom中配置的先后为准,如有下面配置文件:
则先在useresource工程中根据path路径查找,然后在zmodel,amodel,test1,designmodel中查找。