类加载器的作用是将.java文件编码成.class文件,通过、jvm虚拟机启动时,会将.class文件拆分成四分五裂的,通过一个.class对象来调用它,这就是类加载器,并为之生成的java.lang.Class对象。
虚拟机启动,会形成由三个类加载器组成的初始类加载器的层次结构:
1.引导类加载器:Bootstrap jre/lib/rt.jar 对这个路径下的架包都是由引导类加载
2.扩展类加载器:ExtClassLoader jre/lib/ext/*.jar 对这个路径下的架包都是由扩展类加载
3.应用类加载器(系统类加载器): AppClassLoader(sysClassLoader) classpath指定的所有jar或目录 自己加入的架包
如何获取一个引导类加载?
在class类中有一个getclassloader()它的返回就是一个类加载器。
classloader() cl=string.class.getclassloader();
system.out.println(cl)
结果为null.
原因:因为引导类加载器是特殊的,他不是java实现,所以在得到引导类回载器的结果为空。
url[ ] urls=sun.misc.launcher.getBootstrapClasspath().getUrls();
for(int i=0;i