什么是类加载过程?
所谓的类加载过程,就是将类的字节码加载到内存,生成java.lang.Class实例的过程。该实例用来为程序提供操作此类或访问此类数据的入口。
验证应用类加载器加载classpath下的类
自定义testLoader类放在classpath以外的文件路径中,文件的内容如下:
在命令行手动编译并运行,起初输出中文结果报错:
之后改为英文 ,能够正确输出
此时若直接在eclipse环境中的一个程序内输出
则会报错查无此文件。即使在外界路径中已经编译成功了也是如此。
若在classpath范围内创建文件,并查看它的类加载器,会有如下结果:
输出为
从上到下依次为:father.class自己的类加载器,父、爷类加载器
爷爷加载器为空的原因是:bootstrap是用C++写的,他不像另外两个有父类子类这样的继承关系。
加载过程中的双亲委派
bootstrap(核心加载)——extension(加载扩展)——system classloader