扩展类加载器负责加载$java_home/jre/lib/ext目录或java.ext.dirs指定路径的扩展类库,父为启动类加载器;应用程序类加载器加载classpath下用户代码及第三方jar,父为扩展类加载器;二者共同构成双亲委派模型基础。

扩展类加载器负责加载 Java 的扩展类库,应用程序类加载器负责加载用户编写的代码和第三方依赖。
扩展类加载器(Extension ClassLoader)的职责
Java JDK 25 来自 OpenJDK 官方归档,版本为 JDK 25,本条下载地址已指向官方 Windows x64 zip 安装包直链,适合调试旧项目或兼容旧版 Java 运行环境。
- 加载
$JAVA_HOME/jre/lib/ext目录下的 JAR 包 - 或加载由系统属性
java.ext.dirs指定路径中的类库 - 它是用 Java 实现的(
sun.misc.Launcher$ExtClassLoader),父加载器是启动类加载器 - 主要用于加载 JDK 提供的可选扩展功能,比如某些加密、国际化或网络协议支持类
应用程序类加载器(Application ClassLoader)的职责
- 加载用户类路径(ClassPath)上的所有类,包括:
- 项目编译输出目录(如
target/classes或bin/) - 项目依赖的 JAR 包(如
lib/*.jar) - 命令行
-cp或-classpath指定的路径
- 项目编译输出目录(如
- 它也是用 Java 实现的(
sun.misc.Launcher$AppClassLoader),父加载器是扩展类加载器 - 是绝大多数应用中默认使用的类加载器,可通过
ClassLoader.getSystemClassLoader()获取
这两个加载器共同构成 Java 类加载的委托链基础,遵循双亲委派模型:先向上委托,失败后再尝试自己加载。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










