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

简介:

一、同一工程中:

 
  1. String path = Thread.currentThread().getContextClassLoader().getResource(".").getPath(); 
  2.        System.out.println(path); 
  3.  
  4.        String string = Sample1.class.getClassLoader().getResource(".").getPath(); 
  5.        System.out.println(string); 
  6.  
  7.        String string2 = Sample1.class.getResource(".").getPath(); 
  8.        System.out.println(string2); 

测试结果:

 
  1. /D:/workspaces/workspace7/demo1/target/classes/ 
  2. /D:/workspaces/workspace7/demo1/target/classes/ 
  3. /D:/workspaces/workspace7/demo1/target/classes/com/alibaba/ 

说明:

Classloader读取文件(即方式1和方法2)都是从classpath开始查找文件; 方式3从当前类所在的目录下开始查找文件

二、不同的工程中,实验如下: 

 
  1. public class Sample2 { 
  2.     public static void main(String[] args) { 
  3.         Sample1 sample1 = new Sample1(); 
  4.         sample1.print(); 
  5.     } 

执行结果:

 
  1. /D:/workspaces/workspace7/demo2/target/classes/ 
  2. /D:/workspaces/workspace7/demo2/target/classes/ 
  3. /D:/workspaces/workspace7/demo1/target/classes/com/alibaba/ 

 

说明:Classloader获取的内容始终从调用方出发; 而一般类的资源获取是从类自身的位置触发



本文转自 zhouhaipeng 51CTO博客,原文链接:http://blog.51cto.com/tianya23/731287,如需转载请自行联系原作者


相关文章
|
5月前
|
Java
Thread 类中的start() 和 run() 方法有什么区别
【8月更文挑战第9天】Thread 类中的start() 和 run() 方法有什么区别
350 0
Thread 类中的 start () 和 run () 方法的区别
Thread 类中的 start () 和 run () 方法的区别
70 0
|
Java 调度
Thread类的方法
Thread类的方法
44 0
测试Thread中的常用方法
测试Thread中的常用方法
75 0
|
PHP 开发者
最终类 final|学习笔记
快速学习最终类 final,前面说的 PHP 是可以继承的,类是可以继承的,类有我可以继承子类,再往后类又可以继承孙子类,类可以无无限继承,现在确定一个问题,类继承的多了,代表类的重用性增加了,但是系统的解析复杂程度会增加,随之而来的是效率的降低。 那如果有些类已经达到最小的程度,无法再扩展时,或者不需要继续扩展了,这个时候就要使用最终类 final。现在了解一些什么是最终类,掌握 final 关键字的最终作用和实际应用场景。
最终类 final|学习笔记
class_destroy源码分析
class_destroy源码分析
|
Java 调度 API
java之Thread.sleep(long)与object.wait()/object.wait(long)的区别及相关概念梳理(good)
一、Thread.sleep(long)与object.wait()/object.wait(long)的区别sleep(long)与wait()/wait(long)行为上有些类似,主要区别如下:1.Thread.sleep(long)是属于Thread类的静态方法。
1380 0

热门文章

最新文章