java类加载器(在java中,什么是类加载器子系统)
本文目录
在java中,什么是类加载器子系统
java中的类要加载到jvm中才能使用,那么把java类加载到jvm中的工具,就是类加载器。java内置3种类加载器,BootstrapClassLoader,ExtClassLoader,SystemClassLoader(可能名字不对),第一个是加载jvm启动时需要的类和一些基本java类库,它不是java写的;另外两个都是java写的,用来加载其它java类。用户自己写的类一般用SystemClassLoader加载,因为它的加载路径是classpath,可以自己设定,一般都会把项目路径设进去
java什么时候bootstrp类加载器会无法加载
以下属于个人理解哈类加载器加载,可以理解为,它从一些资源里解析类信息加载到虚拟机最简单的就是我们的代码在jar包里,jar里的class文件是怎么被读到虚拟机里并能产生类对象的,就是因为有类加载器找到了这个jar,并且解析读取了jar,读到里面的class文件,进而加载至虚拟机至于为什么好几层类加载器,我觉得是程序定义了不同层次的资源,比如首先得尝试加载jdk本身的库、jar,然后我们自己写的代码也被类加载器扫描解析加载所以这里面,至少就有2个层次,1个是像jdk这种,我们用jdk就会用它的库,如果它自己没有类加载器运行就会有问题,(类似的比如我们用某些框架,框架本身也可能会写自己的类加载器并加载自己需要的资源),然后我们自己开发的代码也是相当于jdk给预留了扫描的位置,我们在其中添加的class会被读到(配置源代码,配置library啥的),那么如果我们添加到不是jdk能识别的位置,它肯定就加载不了了...需要我们手动加载(很实际的例子,spring的bean不就是配了一个bean的xml,扫描文件读取解析吗,如果放的不是xml是class文件呢对不对)至于为什么双亲委派,这个搜一搜就会有答案了,防止出现相同的类的定义就可能导致无法确定类是哪个了...比如手残非要按jdk代码一样写个java.lang.Object...(写不了的哈)类加载器:???所以先保证底层的类加载先加载完需要的类,加载不了的再交给子加载器,逐层尝试加载完所需要的的资源
更多文章:

selection中文意思(quite a selection 是什么意思)
2025年3月30日 07:30

ignored xml validation warning(Eclipse打开xml文件报校验错误怎么解决)
2025年3月19日 18:50

java定义一个数组(Java中声明一个数组既创建一个数组这种说法对不对)
2025年3月16日 20:30

ip地址dhcp是什么意思(手机上ip设置里的dhcp是什么)
2025年3月15日 12:40

删除string中的某个字符(c#如何把字符串中的指定字符删除)
2025年3月28日 12:40

游戏辅助框架免root(手游辅助制作root与免root区别)
2025年2月13日 12:40

sql数据库删除后恢复(sqlserver数据库表数据误删除了 怎么恢复)
2025年2月25日 22:10

consideration的固定搭配(consider的固定搭配)
2025年3月29日 07:40

localhost 8080什么意思(http://localhost:8080/test/,我想问一下8080后面的/代表什么目录啊)
2025年3月27日 15:10