您的位置:首页 > 其它

Thread.currentThread().getContextClassLoader() 和 Class.getClassLoader()的区别

2013-12-12 16:38 344 查看
 

一、同一工程中:

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐