我知道当我们启动任何 java 进程时,我们使用类路径来添加第三方 jar。是否有人有关于 JVM 如何读取或 JVM 对类路径中指定的 jar 做什么的任何资源或信息?
我只是好奇 JVM 究竟是如何处理类路径的。
谢谢。
我知道当我们启动任何 java 进程时,我们使用类路径来添加第三方 jar。是否有人有关于 JVM 如何读取或 JVM 对类路径中指定的 jar 做什么的任何资源或信息?
我只是好奇 JVM 究竟是如何处理类路径的。
谢谢。
类路径是线性读取的,因此当请求一个类时,Java 会在它的类路径上找到它的第一个实例。话虽如此,当您启动 Java 时,实际上存在三个类路径级别。第一个是包含 java 核心 jars(java.lang 等)的引导类路径。第二个是扩展类路径,其中包含在 java 安装的扩展 (ext) 目录中找到的任何 jar。第三个是用户指定的运行程序的类路径。这些类路径将始终按照从引导程序开始的顺序线性读取,然后是扩展,最后是用户指定的类路径。这就是阻止某人在普通程序中覆盖 java.lang 类的原因。即使类路径中稍后有另一个匹配项,找到匹配项的第一个类总是获胜。