美文网首页
ClassLoader源码分析--深入理解java虚拟机·读书笔

ClassLoader源码分析--深入理解java虚拟机·读书笔

作者: pianpianboy | 来源:发表于2018-02-24 17:19 被阅读0次

ClassLoader源码分析

时间20180224


//我们可以使用测试代码测试一下sun.boot.class.path的内容
System.out.println(System.getProperty("sun.boot.class.path"));
C:\Program Files\Java\jre1.8.0_151\lib\resources.jar;
C:\Program Files\Java\jre1.8.0_151\lib\rt.jar;
C:\Program Files\Java\jre1.8.0_151\lib\sunrsasign.jar;
C:\Program Files\Java\jre1.8.0_151\lib\jsse.jar;
C:\Program Files\Java\jre1.8.0_151\lib\jce.jar;
C:\Program Files\Java\jre1.8.0_151\lib\charsets.jar;
C:\Program Files\Java\jre1.8.0_151\lib\jfr.jar;
C:\Program Files\Java\jre1.8.0_151\classes

EtxClassLoader

System.out.println(System.getProperty("java.ext.dirs"));
C:\Program Files\Java\jre1.8.0_91\lib\ext;
C:\Windows\Sun\Java\lib\ext

AppClassLoader

System.out.println(System.getProperty("java.class.path"));
D:\workspace\ClassLoaderDemo\bin

以上的测试,我们知道了BoostrapClassLoader、ExtClassLoader、AppClassLoader实际是查阅相应的环境属性sun.boot.class.path、java.ext.dirs和java.class.path来加载资源文件的。

类加载器的加载顺序:

例子:

package com.classLoaderTest;

public class ClassLoaderTest {
    public static void main(String[] args) {
        ClassLoader cl = Test.class.getClassLoader();
        System.out.println("ClassLoader is :"+cl.toString());
    }
}

ClassLoader is :sun.misc.Launcher$AppClassLoader@4e25154f
也就是说Test.class文件是由AppClassLoader加载的。

由于Test是我们自己编写的,有AppClassLoader加载很容易理解。那么int.class或者是String.class的加载是由谁完成的呢?
我们可以在代码中尝试

public class ClassLoaderTest {
    public static void main(String[] args) {
        ClassLoader cl = Test.class.getClassLoader();
        System.out.println("Test ClassLoader is :"+cl.toString());
        
        ClassLoader C2 = int.class.getClassLoader();
        ClassLoader C3 = String.class.getClassLoader();
        
        System.out.println("int ClassLoader is :"+C2.toString());
        System.out.println("String ClassLoader is :"+C3.toString());
    }
}

运行一下报错。


image.png

提示的是空指针,难道int.class这类基础类没有类加载器加载?

双亲委托模型

**

相关文章

网友评论

      本文标题:ClassLoader源码分析--深入理解java虚拟机·读书笔

      本文链接:https://www.haomeiwen.com/subject/ripqxftx.html