跳到主要内容

请列举哪些Java类加载器 ?

参考答案:

Java类加载器(ClassLoader)是Java运行时环境的一部分,负责在运行时动态加载Java类到JVM中。Java类加载器的主要作用是找到类的字节码文件并加载到内存中,然后将其定义为一个Java类。

Java类加载器主要包括以下三种:

  1. 引导类加载器(Bootstrap ClassLoader):这是最顶层的加载类,主要加载核心类库,如rt.jarresources.jarcharsets.jar等。这个类加载器是由JVM自身实现的,并不是由Java代码实现的。因此,这个类加载器没有对应的Java类。
  2. 扩展类加载器(Extension ClassLoader):这是引导类加载器的子加载器,它的父加载器是引导类加载器。它从java.ext.dirs系统属性所指定的目录中加载类库,或者从JDK的安装目录的lib/ext子目录(如果java.ext.dirs没有定义)下加载类库。如果用户创建的JAR放在此目录下,也会被自动加载。
  3. 系统类加载器(System ClassLoader):也称为应用类加载器(Application ClassLoader)。它是扩展类加载器的子加载器,它的父加载器是扩展类加载器。它负责加载环境变量classpath或系统属性java.class.path指定路径下的类库,这是最常用的类加载器。一般来说,Java应用的类都是由它来完成加载的。通过ClassLoader.getSystemClassLoader()方法可以得到它。

除了这三种类加载器,用户还可以根据需要自定义类加载器,通过继承java.lang.ClassLoader类并重写其findClass(String name)方法来实现。自定义的类加载器通常用于加载特定位置的类,或者实现更复杂的类加载逻辑。