分类
启动类加载器(Bootstrap ClassLoader):jre和jre/lib目录下的核心库
扩展类加载器(Extension ClassLoader):jre/lib/ext目录下的扩展包
应用程序类加载器(Application ClassLoader):当前应用的classpath
机制(双亲委派)
先自下而上,查找class缓存,再自上而下查找加载的类
保证类的全局唯一性
问题
上级类加载器无法加载到下级类加载器加载的类
例如JNDI的类库代码是启动类加载器加载的,而JNDI的接口服务提供者(SPI)是在classpath中
解决
线程上下文类加载器(Thread Context ClassLoader)
ServiceLoader使用了线程上下文类加载器,是SPI中的服务类加载的核心类