在java中动态加载类时

在java中动态加载类时,java,class,jvm,classloader,Java,Class,Jvm,Classloader,假设在java中,我正在动态加载类A 类A使用java标准库类和 用户定义的类。 我想知道什么是必须加载A使用的所有类的类加载器 谢谢这取决于加载类A 首先,类加载器之间有一个层次关系 标准Java机制(父级优先): 通常,当您必须加载一个类时,默认情况下,它遵循以下模式: 检查父类加载器是否可以加载该类(每个类加载器将委托给其父类) 如果父类无法加载该类,则子类加载程序将尝试加载该类 如果子级也无法加载它,则会引发ClassNotFoundException 特殊情况(儿童优先): 在此场景中

假设在java中,我正在动态加载类
A

A
使用java标准库类和
用户定义的类。
我想知道什么是必须加载
A
使用的所有类的类加载器


谢谢

这取决于加载类
A

首先,类加载器之间有一个层次关系

标准Java机制(父级优先):

通常,当您必须加载一个类时,默认情况下,它遵循以下模式:

  • 检查父类加载器是否可以加载该类(每个类加载器将委托给其父类)
  • 如果父类无法加载该类,则子类加载程序将尝试加载该类
  • 如果子级也无法加载它,则会引发ClassNotFoundException
  • 特殊情况(儿童优先):

    在此场景中,子类加载器(即您的类加载器)可以尝试加载该类,如果该类加载器无法加载所需的类,则它可以请求父类加载该类。如果父级无法加载该类,则会引发ClassNotFoundException


    在任何情况下,java核心类都应该由父类加载器加载。
    然而,从理论上讲,只要您有权访问包含这些类的jar,就可以让自定义类加载器加载这些类