java 类加载器ClassLoader详解(二)——获取资源(getResource)

时间:2023-01-16 18:46:09

一、如何获取ClassLoader

       参见如下代码:

public class ClassLoaderTest {
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);
}
}
二、ClassLoader.getResource(String path)

       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("")