Java ClassLoader 学习笔记
本系列文章主要通过实例演示,源码分析等讲解java classloader加载原理,加载机制。并学习了dos环境下的java代码编译,运行,打包等。
菜菜的中年程序猿
热爱编程的2B小青年
展开
-
ClassLoader 深入解析学习笔记(六)
经过前面的实例演示,我们弄清楚了以下几点: java 类加载分为 1、启动类加载器,也叫根类加载器(BootStrapClassLoader),负责加载java核心api,如rt.jar等。需要清除的是它不是java.lang.ClassLoader的子类,它是JVM自身内部由C/C++实现的,并不是Java实现的。 2、扩展类加载器(Launcher$ExtClassLoader),负责加...原创 2018-05-20 11:59:26 · 556 阅读 · 1 评论 -
ClassLoader 深入解析学习笔记(五)
既然自定义加载器可以加载我们本地中的class文件或者jar,那它可以访问网络上的资源吗,答案是肯定的,本实例会实现自定义加载器去访问web工程上面class文件。 自定义加载器 NetFileClassLoader ,其实与加载本地文件不同的只是将class类的路径转换为了URL。其他完全样。 package main; import java.io.ByteArrayOutputStre...原创 2018-05-16 22:59:43 · 345 阅读 · 0 评论 -
ClassLoader 深入解析学习笔记(四)
java提供的加载器根加载器,扩展加载器,系统加载器都只能加载指定位置的class和jar,如果我们想要加载其他位置,就比如D盘下某个文件加下的class文件就需要自定义ClassLoader。 自定义ClassLoader最主要的就是要重写findClass方法。 具体代码如下: package main; import java.io.ByteArrayOutputStream; ...原创 2018-05-16 00:11:41 · 390 阅读 · 0 评论 -
ClassLoader 深入解析学习笔记(三)
我们知道ClassLoader加载机制是双亲委托模型,第一个原先是为了避免重复加载,在学习笔记一中也得到体现,至于第二点是为了安全,避免我们动态修改java核心的api。那我们就开始证明这结论吧。 我们自定义String类,代码如下 //注意报名定义必须与java核心String类一样 package java.lang; import org.junit.Test; public...原创 2018-05-14 21:16:12 · 306 阅读 · 0 评论 -
ClassLoader 深入解析学习笔记(二)
在 深入分析Java ClassLoader原理文章中提到的实现BootStrap加载器加载自定义测试类ClassLoaderTest。 却发现始终无法达到预期结果。 ClassLoaderTest代码如下 package test; public class ClassLoaderTest { public static void main(String[] args) { ...原创 2018-05-13 19:05:32 · 435 阅读 · 1 评论 -
ClassLoader 深入解析学习笔记(一)
在上篇转载的ClassLoader深入解析中,我们知道了类加载器的种类,以及java类文件加载的方式(双亲委托)。现就进行打包自己定义的类放到jdk的ext目录下: 测试代码 //定义一个自己的类 public class ClassLoaderTest { public static void main(String[] args) { ClassLoader c...原创 2018-05-12 19:14:21 · 532 阅读 · 0 评论