ClassLoader的分类及加载顺序是什么

2023-04-23 20:59:00 分类 加载 顺序

ClassLoader是Java语言中的一个重要组件,它负责将字节码文件加载到内存中,使其成为可以被JVM执行的有效的Java字节码。ClassLoader的分类主要有三种:Bootstrap ClassLoader,Extension ClassLoader和Application ClassLoader。

Bootstrap ClassLoader是Java类加载器的根,它负责加载Java的核心类库,如java.lang.*,java.net.*等,这些类库都位于/lib目录下,它是由C/C++编写的,无法使用Java语言编写。

Extension ClassLoader是扩展类加载器,它负责加载Java的扩展类库,如sun.*,com.sun.*等,这些类库都位于/lib/ext目录下,它也是由C/C++编写的,无法使用Java语言编写。

Application ClassLoader是应用程序类加载器,它负责加载应用程序中定义的类,这些类通常位于CLASSPATH环境变量指定的目录中,它是由Java语言编写的,可以使用Java语言编写。

ClassLoader的加载顺序是:Bootstrap ClassLoader先加载,然后是Extension ClassLoader,最后是Application ClassLoader。当一个类被加载时,首先会检查Bootstrap ClassLoader中是否存在该类,如果不存在,则检查Extension ClassLoader中是否存在该类,如果仍然不存在,则检查Application ClassLoader中是否存在该类,如果仍然不存在,则抛出ClassNotFoundException异常。

相关文章