zoukankan      html  css  js  c++  java
  • 【JVM学习笔记】扩展类加载器

    扩展类加载器独有的特点,代码如下

    public class Sample {
    }
    public class Test {
    
        static {
            System.out.println("Test static block");
        }
    
        public static void main(String[] args) {
            System.out.println(Test.class.getClassLoader());
            System.out.println(Sample.class.getClassLoader());
        }
    }

    在控制台运行,结果如下

    D:workspace-learncommon-learnlearn-jvm	argetclasses>java -Djava.ext.dirs=./ com.learn.jvm.loader.Test
    Test static block
    sun.misc.Launcher$AppClassLoader@334dcfad
    sun.misc.Launcher$AppClassLoader@334dcfad

    可以看到,即使我们已经通过 -Djava.ext.dirs=./ 指定了扩展类加载器的加载路径,并且在该路径下能够找到Test类和Sample类,但是运行结果表明这两个类依然是由系统类加载器所加载的。 

    这是因为扩展类加载器只加载jar包

    通过以下命令对Sample.class进行打包

    jar cvf Sample.jar ./com/learn/jvm/loader/Sample.class

    然后再次运行,结果如下

    D:workspace-learncommon-learnlearn-jvm	argetclasses>java -Djava.ext.dirs=./ com.learn.jvm.loader.Test
    Test static block
    sun.misc.Launcher$AppClassLoader@397d812b
    sun.misc.Launcher$ExtClassLoader@5eab4b89

    可以看出,这次Sample类正常加载了

  • 相关阅读:
    Chapter 4
    Chapter 3
    chapter 2
    Python编程指南 chapter 1
    BASE64 编码和解码
    生成 PDF 全攻略【2】在已有PDF上添加内容
    IDEA 和 Eclipse 使用对比
    web 前端常用组件【06】Upload 控件
    聊聊 Web 项目二维码生成的最佳姿势
    依附大系统 【数据实时获取】解决方案
  • 原文地址:https://www.cnblogs.com/heben/p/11452712.html
Copyright © 2011-2022 走看看