AppClassLoader

2024-03-29 11:38
文章标签 appclassloader

本文主要是介绍AppClassLoader,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

疑问

为何 继承ClassLoader的自定义类加载器默认会调用super()传入默认的AppClassLoader作为parent?

带着这个疑问 , 查看了下URLClassLoader的源码

根据URLClassLoader继承了ClassLoader,

URLClassLoader

类加载器的实例隔离Class对象中MyClassLoader隐式的调用了super()
在这里插入图片描述

在这里插入图片描述
ClassLoader.getSystemClassLoader()获取系统默认
ClassLoader

Launcher 去获取 ClassLoader
在这里插入图片描述
返回的this.loader
在这里插入图片描述
this.loader在初始化Launcher的时候去初始化

注入ExtClassLoader作为AppClassLoader的parent 并返回该AppClassLoader。
由此已经解决了疑问 【为何 继承ClassLoader的自定义类加载器默认会调用super()传入默认的AppClassLoader作为parent?】
在这里插入图片描述

AppClassLoader的类加载目录

顺便了解了一下系统类加载器 App ClassLoader中提到AppClassLoader加载的 -cp/-classpath 指定的类库资源,但是为何呢?
因为如图可以看见 初始化AppClassLoader的时候, 已经指定了java.class.path作为其加载类的目录。而java.class.path包含了classpath的目录
在这里插入图片描述
AppClassLoader加载的是java.class.path指定的目录,其包含-classpath指定的目录
在这里插入图片描述
-classpath
在这里插入图片描述

ps:ExtClassLoader类似
在这里插入图片描述

这篇关于AppClassLoader的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/858494

相关文章

根据配置CLASSPATH彻底弄懂AppCLassLoader的加载路径问题

1.前言   相信任何使用JAVA语言的开发者,都会在一台新的PC上去装上JDK,JRE,用来可以编译我们所写的.java文件,然后让其生成编译后的.class文件,从而能够争取执行。。。有兴趣可以简单了解一下JDK和JRE的作用。   当我们装上JDK的时候,相信大家还会经历非常重要的一步,就是配置环境变量。并且,毫不避讳的说,初次接触java的初学者,总是在配置环境变量的时候,一头雾水,那

windows上hive的安装:报错ClassLoaders$AppClassLoader cannot......bootstrap...

1、下载hive安装包2.1.1,如果使用更新的版本的hive,会因为hive中缺少很多cmd文件而出错。 2、下载并安装mysql,hive默认的存放元数据的数据库不是mysql 3、下载mysql的jdbc驱动java版的 4、配置hive-site.xml文件,要配置一些文件夹和mysql连接的信息 主要要配置两种文件夹,一种是在hdfs中存放文件的文件夹,这个要事先在hdfs