java类加载器有:
1、引导类加载器(bootstrap classloader):只加载JVM自身需要的类,包名为java、javax、sun等开头。
2、扩展类加载器(extensions classloader):加载JAVA_HOME/lib/ext目录下或者由系统变量-Djava.ext.dir指定位路径中的类库。
3、应用程序类加载器(application classloader):加载系统类路径java -classpath或 -Djava.class.path下的类库。
4、自定义类加载器(java.lang.classloder):继承java.lang.ClassLoader的自定义类加载器。
注:-Djava.ext.dirs会覆盖java本身的ext设置,造成JDK内建功能无法正常使用。需指定参数:
-Djava.ext.dirss = ./plugin:$JAVA_HOME/jre/lib/ext
以上类加载器的关系如下:
1、启动类加载器:C++实现,无父类
2、扩展类加载器(ExtClassLoader):java实现,父类加载器为null
3、应用程序类加载器(AppClassLoaser):java实现,父类加载器为ExtClassLoader
4、自定义类加载器:父类加载器为AppClassLoader