您的位置:首页 > 职场人生

实验:Thread.currentThread().getContextClassLoader() and Class.getClassLoader()

2011-12-02 01:23 381 查看
一、同一工程中:

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获取的内容始终从调用方出发; 而一般类的资源获取是从类自身的位置触发

关于Thread.currentThread().getContextClassLoader()与Sample1.class.getClassLoader()的区别,参考:http://tianya23.blog.51cto.com/1081650/731240
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  职场 classloader 休闲
相关文章推荐