黑马程序员技术交流社区
标题:
ClassLoader如何加载class的?
[打印本页]
作者:
章小东
时间:
2012-8-5 22:13
标题:
ClassLoader如何加载class的?
今天学了类加载器,听的不是很明白,谁来帮我解答下ClassLoader是如何加载Class的。谢谢
作者:
樊占江
时间:
2012-8-5 22:22
jvm里有多个类加载,每个类加载可以负责加载特定位置的类,例如,bootstrap类加载负责加载jre/lib/rt.jar中的类, 我们平时用的jdk中的类都位于rt.jar中。extclassloader负责加载jar/lib/ext/*.jar中的类,appclassloader负责classpath指定的目录或jar中的类。除了bootstrap之外,其他的类加载器本身也都是java类,它们的父类是ClassLoader
作者:
余明辉
时间:
2012-8-5 22:22
jvm里有多个类加载,每个类加载可以负责加载特定位置的类,
例如,bootstrap类加载负责加载jre/lib/rt.jar中的类, 我们平时用的jdk中的类都位于rt.jar中。
extclassloader负责加载jar/lib/ext/*.jar中的类,
appclassloader负责classpath指定的目录或jar中的类。
除了bootstrap之外,其他的类加载器本身也都是java类,它们的父类是ClassLoader。
下面是演示的代码,运行出结果,很直观的就能观察到他们的关系
public class ClassLoaderBiji {
public static void main(String[] args) {
System.out.println(ClassLoaderBiji.class.getClassLoader()
.getClass().getName());
System.out.println(System.class.getClassLoader());
/**通过打印,了解3个加载器的继承关系
* 先拿到一个类加载器,然后打印出它的名字,
* 然后再拿到父类的加载器,继续打印出名字。
* */
ClassLoader loader = ClassLoaderBiji.class.getClassLoader();
while(loader != null) {
System.out.println(loader.getClass().getName());
loader = loader.getParent();
}
System.out.println(loader);
}
}
希望可以帮到你
作者:
章小东
时间:
2012-8-5 22:59
刚才网速卡。不小心发了两次。现在问题已经解决了。不好意思
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2