谁加载java.lang.ClassLoader?

谁加载java.lang.ClassLoader?,java,classloader,Java,Classloader,我在读类是如何加载的。似乎java.lang.ClassLoader的实例正在做这项工作 但是谁加载了java.lang.ClassLoader?我想我可以添加这个作为一个答案,这样人们可以更容易地看到它 java.lang.ClassLoader是java核心库(作为抽象类)的一部分,java提供的实现由JVM通过引导类加载器加载。引导类加载器是用本机代码编写的,在JVM启动时运行,以加载$Java\u HOME/jre/lib中的所有Java库 要引用相关Wikipedia条目re:Java

我在读类是如何加载的。似乎java.lang.ClassLoader的实例正在做这项工作


但是谁加载了java.lang.ClassLoader?

我想我可以添加这个作为一个答案,这样人们可以更容易地看到它

java.lang.ClassLoader
是java核心库(作为抽象类)的一部分,java提供的实现由JVM通过引导类加载器加载。引导类加载器是用本机代码编写的,在JVM启动时运行,以加载
$Java\u HOME/jre/lib中的所有Java库

要引用相关Wikipedia条目re:Java类加载器:

启动JVM时,将使用三个类装入器:

  • 引导类装入器
  • 扩展类加载器
  • 系统类加载器
  • 引导类加载器加载位于$Java_HOME/jre/lib目录中的核心Java库。这个类加载器是核心JVM的一部分,是用本机代码编写的

    扩展类加载器将代码加载到扩展目录($JAVA_HOME/jre/lib/ext或JAVA.ext.dirs系统属性指定的任何其他目录)中。它由sun.misc.Launcher$ExtClassLoader类实现

    系统类加载器加载java.class.path上的代码,该代码映射到CLASSPATH环境变量。这是由sun.misc.Launcher$AppClassLoader类实现的


    当您使用
    java-cp my.package.MainClass
    启动JVM时,上面提到的引导类加载器在本机代码中运行(作为JVM可执行文件的一部分),以加载所有java本机库。然后启动上面提到的类加载器链,以加载在命令行和/或类路径参数中指定的任何剩余类。

    JVM有一个引导类加载器,当您使用主参数调用程序时,它将加载该类class@RyanJ谁加载JVM的引导类加载器?;)@RyanJ+1,我想每个人都明白你想说什么,但是“当你用你的主类调用程序时”是什么意思呢?@MaartenBodewes-owlstead好的一点,我有点想当然地把它扔出去了。。。我用它更新了我的答案。@Charlie