JVM启动时,会有三个初始加载器:
bootstrap classloader
|
extension classloader
|
system classloader
bootstrap classloader:
引导类加载器,它负责加载java core类,即JAVA_HOME/jre/lib/* 下的所有类。它是一个比较特殊的类加载器,不是java.lang.ClassLoader的子类,而是由JVM自身来实现的
extension classloader:
扩展类加载器,它负责加载jre的扩展目录,即JAVA_HOME/jre/lib/ext/*下的或者由java.ext.dirs系统属性指定的目录下的所有JAR包下的类。
system classloader:
系统类加载器(应用类加载器),它负责在JVM启动的时,加载来自在命令JAVA中-classpath 或者java.class.path系统属性或者CLASSPATH操作系统属性所指定的JAR类包和类路径。
可以通过静态方法
ClassLoader.getSystemClassLoader()
找到该类加载器。如果没有特别指定,则用户自定义的任何类加载器都将该类加载器作为它的父加载器。执行下列代码即可获得用户在系统属性里面设置的CLASSPATH:
System.getProperty("java.class.path")