自己手动写Java虚拟机-第2章 搜索Class文件

Kelvin

类路径

Oracle的Java虚拟机通过类路径搜索类,按照搜索的先后顺序,类路径可分为以下3个部分:

  • 启动类路径(bootstrap classpath)
  • 扩展类路径(extension classpath)
  • 用户类路径(userclasspath)
    启动类路径默认对应jre\lib目录,Java标准库(大部分在rt.jar里)位于该路径.
    扩展类路径默认对应jre\lib\ext目录.

Go语言defer

defer一般用于资源的释放和异常的捕捉, 作为Go语言的特性之一.
defer 语句会将其后面跟随的语句进行延迟处理. 意思就是说跟在defer后面的语言将会在程序进行最后的return之后再执行.
在defer归属的函数即将返回时,将延迟处理的语句按 defer 的逆序进行执行也就是说先被defer的语句最后被执行,最后被 defer 的语句,最先被执行.

实现类路径

先加载指定jar包,再在其中寻找所需的.class文件并读取其中的内容.

1
2
3
4
5
Entry接口
CompositeEntry 在组合路径下的jar包中寻找.class文件
WildcardEntry 无输入,依次在jre/lib,jre/lib/ext,classpath下寻找.class文件
ZipEntry 在jar包或zip中寻找.class文件
DirEntry 在当前目录下寻找.class文件
  • Title: 自己手动写Java虚拟机-第2章 搜索Class文件
  • Author: Kelvin
  • Created at: 2023-01-16 00:00:00
  • Updated at: 2023-05-11 21:41:57
  • Link: https://yanwc.com/2023/01/16/2023-01-16-jvmgo-ch02/
  • License: This work is licensed under CC BY-NC-SA 4.0.
On this page
自己手动写Java虚拟机-第2章 搜索Class文件