Maison  >  Article  >  Java  >  L'utilisation et la classification des chargeurs de classes Java

L'utilisation et la classification des chargeurs de classes Java

WBOY
WBOYavant
2023-04-26 08:19:06966parcourir

Classification

1. Le chargeur de classe de démarrage, écrit en C++, est le chargeur de classe fourni avec la JVM

Il est responsable de la bibliothèque principale de la plate-forme Java et est utilisé pour charger la bibliothèque de classes principale. Construisez ExtClassLoader et AppClassLoader. Le chargeur ne peut pas obtenir directement la bibliothèque principale de la plateforme

Java : jrelibrt.jar. Ouvrez-la avec un logiciel de compression. Les classes à l'intérieur sont ce que nous apprenons habituellement. Ce jre est un jre public, pas un jre dédié dans le répertoire jdk

2. Le chargeur de classe d'extension, est responsable du package jar dans le répertoire jrelibext

ou -D java.ext.dirs spécifie le package jar dans le répertoire dans la bibliothèque de travail

Ici, jre est également un jre public

3. Le chargeur de classe système

est responsable du chargement des classes et des packages jar dans le répertoire pointé par java -classpath ou -D java.class. chemin, qui est le périphérique de chargement le plus couramment utilisé

Instance

package com.volcano.reflection;
 
public class TestReflection4 {
    public static void main(String[] args) {
        //获取系统类加载器
        ClassLoader classLoader = ClassLoader.getSystemClassLoader();
        System.out.println(classLoader);
        //获取拓展类加载器
        classLoader = classLoader.getParent();
        System.out.println(classLoader);
        //获取引导类加载器(是直接无法获取的)
        classLoader = classLoader.getParent();
        System.out.println(classLoader);
 
        //测试当前类是由哪个类加载器加载的——引导类加载器
        System.out.println(TestReflection4.class.getClassLoader());
        //测试JDK内置的类是由哪个类加载器加载的——系统类加载器null
        System.out.println(Object.class.getClassLoader());
 
        //如何获得系统类加载器的加载的类的路径
        System.out.println(System.getProperty("java.class.path"));
        /*之前用过的commons-io和自己写的类也在其中
        * E:\JDK\jre\lib\charsets.jar;
        * E:\JDK\jre\lib\deploy.jar;
        * E:\JDK\jre\lib\ext\access-bridge-64.jar;
        * E:\JDK\jre\lib\ext\cldrdata.jar;
        * E:\JDK\jre\lib\ext\dnsns.jar;
        * E:\JDK\jre\lib\ext\jaccess.jar;
        * E:\JDK\jre\lib\ext\jfxrt.jar;
        * E:\JDK\jre\lib\ext\localedata.jar;
        * E:\JDK\jre\lib\ext\nashorn
        * .jar;E:\JDK\jre\lib\ext\sunec.jar;
        * E:\JDK\jre\lib\ext\sunjce_provider.jar;
        * E:\JDK\jre\lib\ext\sunmscapi.jar;
        * E:\JDK\jre\lib\ext\sunpkcs11
        * .jar;E:\JDK\jre\lib\ext\zipfs.jar;
        * E:\JDK\jre\lib\javaws.jar;
        * E:\JDK\jre\lib\jce.jar;
        * E:\JDK\jre\lib\jfr.jar;
        * E:\JDK\jre\lib\jfxswt.jar;
        * E:\JDK\jre\lib\jsse.jar;
        * E:\JDK\jre\lib\management-agent.jar;
        * E:\JDK\jre\lib\plugin.jar;
        * E:\JDK\jre\lib\resources.jar;
        * E:\JDK\jre\lib\rt.jar;
        * F:\云\Code\JavaSE\out\production\基础语法;
        * F:\云\Code\JavaSE\基础语法\src\com\lib\commons-io-2.6.jar;
        * D:\IntelliJ IDEA 2018.2.4\lib\idea_rt.jar
 
         * */
    }
}

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer