前言
工作中需要实现一种功能:动态加载类对象信息,简单说就是class变了Jvm能够立马知道并且加载到内存。
类加载器分类
Java类加载器分为两种,一种是加载启动类,另一种是其他类加载器。Java加载类的关系:Launcher
1. 启动类加载器(BootstrapClassLoader)。
Java 程序是运行在Jvm上,所以Jvm需要知道Java程序的入口在何处(启动类)。Jvm通过c++的LoadMainClass去加载Java程序的sun.launcher.LauncherHelper。并且通过他加载Mian函数所在的扩展类ClassLOader和AppClassLoader。
2. Java自己编写的类加载器。
2.1 ExtClassLoader 扩展类加载器
ExtClassLoader类是没有父类的。
String var0 = System.getProperty("java.ext.dirs");
因为上面的代码,所以可以设置类扩展类加载器加载Jar包的目录。
2.2 AppClassLoader Class_path 指定的Jar包
AppClassLoader的父类为ExtClassLoader。我们main函数所在类的类加载器是AppClassLoader。
Java类加载器会加载的Jar包路径
importsun.misc.Launcher;importjava.net.URL;public classClassLoaderDemo1 {public static voidmain(String[] args) {
String[] split= System.getProperty("sun.boot.class.path")