1.什么是类加载器,作用是什么?
类加载器就加载字节码文件(.class)
2.类加载器的种类
类加载器有三种,不同类加载器加载不同的
- BootStrap:引导类加载器:加载都是最基础的文件
- ExtClassLoader:扩展类加载器:加载都是基础的文件
- AppClassLoader:应用类加载器:三方jar包和自己编写java文件
3.怎么获得类加载器?(重点)
ClassLoader 字节码对象.getClassLoader();
package com.xiaowei.classLoader;
public class Demo {
public static void main(String[] args) {
// 1.获得Demo的字节码对象 这个没有提示 需要自己敲
Class clazz = Demo.class;
// 2.通过字节码对象 获得 类加载器
ClassLoader classLoader = clazz.getClassLoader();
// 3.通过类加载器获得文件的绝对路径
// getResource的参数是相对于classes的路径(classes存放的是编译后的.class文件) 也就是相对于src的路径 (src下存放的是源代码)
String path = classLoader.getResource("com/xiaowei/classLoader/jdbc.properties").getPath();
// classLoader.getResourceAsStream(name) 和这个方法其实是一样的
System.out.println(path);
// /E:/webworkspace/web25my/build/classes/com/xiaowei/classLoader/jdbc.properties
}
}