一、同一工程中:
- String path = Thread.currentThread().getContextClassLoader().getResource(".").getPath();
- System.out.println(path);
- String string = Sample1.class.getClassLoader().getResource(".").getPath();
- System.out.println(string);
- String string2 = Sample1.class.getResource(".").getPath();
- System.out.println(string2);
测试结果:
- /D:/workspaces/workspace7/demo1/target/classes/
- /D:/workspaces/workspace7/demo1/target/classes/
- /D:/workspaces/workspace7/demo1/target/classes/com/alibaba/
说明:
Classloader读取文件(即方式1和方法2)都是从classpath开始查找文件; 方式3从当前类所在的目录下开始查找文件
二、不同的工程中,实验如下:
- public class Sample2 {
- public static void main(String[] args) {
- Sample1 sample1 = new Sample1();
- sample1.print();
- }
- }
执行结果:
- /D:/workspaces/workspace7/demo2/target/classes/
- /D:/workspaces/workspace7/demo2/target/classes/
- /D:/workspaces/workspace7/demo1/target/classes/com/alibaba/
说明:Classloader获取的内容始终从调用方出发; 而一般类的资源获取是从类自身的位置触发

本文深入探讨了Java类加载器的工作原理,包括如何从类路径和当前类目录下查找资源文件,并通过实例展示了不同工程间资源访问的差异。详细解释了类加载器获取文件的方式及其在跨工程场景下的应用。
640

被折叠的 条评论
为什么被折叠?



