java类加载器的分类

分类

1、引导类加载器,用C++编写的,是JVM自带的类加载器

负责Java平台核心库,用来加载核心类库。构造ExtClassLoader和AppClassLoader,该加载器无法直接获取

Java平台核心库:jre\lib\rt.jar,用压缩软件打开,里面的类就是我们平时要学的。这个jre是公共jre,并非jdk目录下的专用jre

2、拓展类加载器,负责jre\lib\ext目录下的jar包

或-D java.ext.dirs指定目录下的jar包装入工作库

此处jre也是公共jre

3、系统类加载器

负责java -classpath或-D java.class.path所指的目录下的类与jar包装入工作,是最常用的加载器

实例

packagecom.volcano.reflection;

publicclassTestReflection4{
publicstaticvoidmain(String[]args){
//获取系统类加载器
ClassLoaderclassLoader=ClassLoader.getSystemClassLoader();
System.out.println(classLoader);
//获取拓展类加载器
classLoader=classLoader.getParent();
System.out.println(classLoader);
//获取引导类加载器(是直接无法获取的)
classLoader=classLoader.getParent();
System.out.println(classLoader);

//测试当前类是由哪个类加载器加载的——引导类加载器
System.out.println(TestReflection4.class.getClassLoader());
//测试JDK内置的类是由哪个类加载器加载的——系统类加载器null
System.out.println(Object.class.getClassLoader());

//如何获得系统类加载器的加载的类的路径
System.out.println(System.getProperty("java.class.path"));
/*之前用过的commons-io和自己写的类也在其中
*E:\JDK\jre\lib\charsets.jar;
*E:\JDK\jre\lib\deploy.jar;
*E:\JDK\jre\lib\ext\access-bridge-64.jar;
*E:\JDK\jre\lib\ext\cldrdata.jar;
*E:\JDK\jre\lib\ext\dnsns.jar;
*E:\JDK\jre\lib\ext\jaccess.jar;
*E:\JDK\jre\lib\ext\jfxrt.jar;
*E:\JDK\jre\lib\ext\localedata.jar;
*E:\JDK\jre\lib\ext\nashorn
*.jar;E:\JDK\jre\lib\ext\sunec.jar;
*E:\JDK\jre\lib\ext\sunjce_provider.jar;
*E:\JDK\jre\lib\ext\sunmscapi.jar;
*E:\JDK\jre\lib\ext\sunpkcs11
*.jar;E:\JDK\jre\lib\ext\zipfs.jar;
*E:\JDK\jre\lib\javaws.jar;
*E:\JDK\jre\lib\jce.jar;
*E:\JDK\jre\lib\jfr.jar;
*E:\JDK\jre\lib\jfxswt.jar;
*E:\JDK\jre\lib\jsse.jar;
*E:\JDK\jre\lib\management-agent.jar;
*E:\JDK\jre\lib\plugin.jar;
*E:\JDK\jre\lib\resources.jar;
*E:\JDK\jre\lib\rt.jar;
*F:\云\Code\JavaSE\out\production\基础语法;
*F:\云\Code\JavaSE\基础语法\src\com\lib\commons-io-2.6.jar;
*D:\IntelliJIDEA2018.2.4\lib\idea_rt.jar

**/
}
}

以上就是java类加载器的分类,希望对大家有所帮助。更多Java学习指路:Java基础

原文来自:https://www.py.cn
© 版权声明
THE END
喜欢就支持一下吧
点赞10 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容