当前位置: 代码迷 >> 综合 >> Java 类加载器:山不辞土,故能成其高
  详细解决方案

Java 类加载器:山不辞土,故能成其高

热度:50   发布时间:2024-02-21 07:40:10.0

前面我们学习了 Java 字节码,写好的代码经过编译变成了字节码,并且可以打包成 Jar 文件。

然后就可以让 JVM 去加载需要的字节码,变成持久代/元数据区上的 Class 对象,接着才会执行我们的程序逻辑。

我们可以用 Java 命令指定主启动类,或者是 Jar 包,通过约定好的机制,JVM 就会自动去加载对应的字节码(可能是 class 文件,也可能是 Jar 包)。

我们知道 Jar 包打开后实际上就等价于一个文件夹,里面有很多 class 文件和资源文件,但是为了方便就打包成 zip 格式。 当然解压了之后照样可以直接用 java 命令来执行。

$ java Hello

或者把 Hello.class 和依赖的其他文件一起打包成 jar 文件:

示例 1: 将 class 文件和 java 源文件归档到一个名为 hello.jar 的档案中: jar cvf hello.jar Hello.class Hello.java 示例 2: 归档的同时,通过 e 选项指定 jar 的启动类 Hello: jar cvfe hello.jar Hello Hello.class Hello.java

然后通过 -jar 选项来执行jar包:

$ java -jar hello.jar

当然我们回过头来还可以把 jar 解压了,再用上面的 java 命令来运行。

运行 java 程序的第一步就是加载 class 文件/或输入流里面包含的字节码。

  1. 类的生命周期和加载过程
  2. 类加载时机
  3. 类加载机制</