Java类加载器分为启动类加载器、扩展类加载器和应用程序类加载器,分别负责加载核心库、扩展库和用户类路径中的类,遵循双亲委派模型以确保类的唯一性和安全性,且可自定义类加载器实现特殊加载需求。

Java类加载器(ClassLoader)负责在运行时动态加载类到JVM中。根据实现方式和职责的不同,Java中的类加载器主要分为以下三类:
1. 启动类加载器(Bootstrap ClassLoader)
特点:
一款非常包包、衣服、鞋子类网站,页面干净清洁、一目了然,mttshop打造精致、简单、易用、免费的商城。 系统要求:IIS5.1以后,必须安装.net 3.5 安装步骤: 1、下载完成后,直接解压文件mttshop.rar 2、附加数据库:解压后的可以找一个叫db的文件夹,解压后直接附加就可以,支持SQL 2000、2005、2008 3、配置web.config文件,找到key=&qu
立即学习“Java免费学习笔记(深入)”;
- 由C/C++语言实现,是JVM的一部分,不属于Java语言层面的类。
- 负责加载JVM核心类库,例如rt.jar、tools.jar、resources.jar等,这些位于JAVA_HOME/jre/lib目录下。
- 无法被Java程序直接引用,调用其方法会返回null。
2. 扩展类加载器(Extension ClassLoader)
特点:
立即学习“Java免费学习笔记(深入)”;
- 由Java语言实现,是sun.misc.Launcher$ExtClassLoader类的实例。
- 父类加载器为Bootstrap ClassLoader。
- 负责加载JAVA_HOME/jre/lib/ext目录下的JAR包或系统属性java.ext.dirs指定路径中的类库。
3. 应用程序类加载器(Application ClassLoader) / 系统类加载器(System ClassLoader)
特点:
立即学习“Java免费学习笔记(深入)”;
- 由Java语言实现,是sun.misc.Launcher$AppClassLoader类的实例。
- 父类加载器为Extension ClassLoader。
- 负责加载用户类路径(ClassPath)上指定的类库,即项目中自己编写的类或第三方依赖(如lib/*.jar)。
- 是默认的类加载器,如果没有自定义类加载器,应用程序通常使用它来加载类。
这三类加载器之间遵循双亲委派模型:当一个类加载器收到类加载请求时,不会自己立即尝试加载,而是先委托给父类加载器去完成,直到Bootstrap ClassLoader。只有当父类加载器无法完成加载时,子加载器才会尝试自己加载。这种机制保证了类的唯一性和安全性。
开发者也可以通过继承java.lang.ClassLoader来实现自定义类加载器,用于从网络、加密文件或其他非标准来源加载类。
基本上就这些。理解类加载器的分类和工作原理,有助于深入掌握Java的类加载机制和解决实际开发中的类冲突等问题。










