一、如何获取ClassLoader
参见如下代码:
public class ClassLoaderTest {二、ClassLoader.getResource(String path)
public static void main(String[] args) {
//1.通过当前线程获取ClassLoader
ClassLoader classLoader1 = Thread.currentThread().getContextClassLoader();
//2.通过类获取ClassLoader
ClassLoader classLoader2 = ClassLoaderTest.class.getClassLoader();
System.out.println(classLoader1);
System.out.println(classLoader2);
}
}
path为相对ClassPath的路径,从ClassPath根下获取,不能以“/”开头。
参见如下代码:
public class TestMain {
public static void main(String[] args) {
TestMain t = new TestMain();
//获取ClassPath的路径
System.out.println(t.getClass().getClassLoader().getResource(""));
//获取ClassPath根下的1.properties文件
System.out.println(t.getClass().getClassLoader().getResource("1.properties"));
//获取ClassPath根下testpackage包中的1.properties
System.out.println(t.getClass().getClassLoader().getResource("testpackage/1.properties"));
}
}
三、Class.getResource(String path)
path不以"/"开头时,默认是从此类包下获取资源,即相对此类所在包的路径;
path以"/"开头时,则是从ClassPath根下获取
Class.getResource("/") == ClassLoader().getResource("")