zoukankan      html  css  js  c++  java
  • 类加载器

    参考:https://blog.csdn.net/iteye_5504/article/details/82584210

    类加载器的分类:
    1、启动类加载器(Bootstrap ClassLoader) 这个类有c++语言实现,是虚拟机的一部分。
    2、所有其他类加载器。其他类加载器都继承抽象类java.lang.ClassLoader。


    做为java的大部分项目,都是有以下三类类加载器加载的:
    1、启动类加载器。加载的内容为:jre/lib 目录中的jar包。(JRE/lib的 所有jar包的.class文件,例如java.lang.System.class等)虚拟机启动首先加载类
    2、扩展类加载器。加载的内容为:java.ext.dirs 系统变量指定的路径中所有类库。实现为:sun.misc.Launcher$ExtClassLoader 实现。
    3、应用类加载器。实现为:sun.misc.Launcher$AppClassLoader。负责加载用户类路径上指定的类库。

     1 package test;
     2 
     3 import java.lang.System;    //BootstrapClassLoader    ./jre/lib/*.jar
     4 import sun.awt.HKSCS;       //BootstrapClassLoader    ./jre/lib/*.jar  
     5 import sun.net.spi.nameservice.dns.DNSNameService;    //ExtClassLoader   ./jre/ext/
     6 import org.apache.commons.lang.StringUtils;    //AppClassLoader
     7 
     8 public class Test {
     9     public static void main(String[] args) {
    10        System.out.println(Thread.currentThread().getContextClassLoader());
    11        System.out.println(StringUtils.class.getClassLoader());
    12 
    13        System.out.println(StringUtils.class.getResource("/"));
    14        System.out.println(Test.class.getResource("/"));
    15 
    16        System.out.println(StringUtils.class.getResourceAsStream("/jdbc.xml"));
    17        System.out.println(Test.class.getResourceAsStream("/jdbc.xml"));
    18     }
    19 }

    未考虑ExtClassLoader

    • 执行javac Test.java

        3.4行编译通过: 说明jre/lib文件夹里的class文件能被虚拟机加载,(Bootstrap ClassLoader)

        第5行出错,找不到程序包:因为Bootstrap ClassLoader,AppClassLoader也未找到。(AppClassLoader 的根目录在执行环境的目录。)

    • 添加StringUtils.class
         在Test.java同目录添加import的.class文件,执行javac Test.java,编译通过。证明StringUtils.class能被AppClassLoader加载(注意包名和路径的对应)
  • 相关阅读:
    hdu 5119 Happy Matt Friends
    hdu 5128 The E-pang Palace
    hdu 5131 Song Jiang's rank list
    hdu 5135 Little Zu Chongzhi's Triangles
    hdu 5137 How Many Maos Does the Guanxi Worth
    hdu 5122 K.Bro Sorting
    Human Gene Functions
    Palindrome(最长公共子序列)
    A Simple problem
    Alignment ( 最长上升(下降)子序列 )
  • 原文地址:https://www.cnblogs.com/scmath/p/10278150.html
Copyright © 2011-2022 走看看