package classder;
import java.net.URL;
public class test {
public static void main(String[] args) {
/*
*
类加载的生命周期:
加载(Loading)
-->验证(Verification)
-->准备(Preparation)
-->解析(Resolution)
-->初始化(Initialization)
-->使用(Using)
-->卸载(Unloading)
* bootstrap classloader 根类加载器
* 加载java的核心类
* extension classloader 扩展类加载器
* 加载jre的扩展目录
* system classloader
* 负责jvm启动是,加载来自 java - 命令的
* 用户自定义的类加载器都作为它的父类加载器
* User Custom ClassLoader/用户自定义类加载器(java.lang.ClassLoader的子类)
* 在程序运行期间,
* 通过java.lang.ClassLoader的子类动态加载class文件,
* 体现java动态实时类装入特性.
*/
System.out.println("BootStrapClassPath");
URL[] urls = sun.misc.Launcher.getBootstrapClassPath().getURLs();
//根类加载器
for (URL url : urls) {
System.out.println(url);
}
System.out.println("=====================");
//系统类加载器
ClassLoader systemClassLoader = ClassLoader.getSystemClassLoader();
System.out.println(systemClassLoader + " = systemClassLoader");
URL resource = systemClassLoader.getResource("");
System.out.println(resource + "=当前路径为系统类加载器的加载路径"); // 当前路径为系统类加载器的加载路径
// 获得系统加载器的父类加载器 应该得到扩展类加载器
ClassLoader parent = systemClassLoader.getParent();
System.out.println(parent + " getparent");
ClassLoader classLoader = test.class.getClassLoader().getParent();
System.out.println(classLoader);
}
}
类加载的一篇文章
顺便看下tomcat 的加载机制