2012-07-16 46 views
2

我知道我们在启动任何java进程时使用classpath来添加第三方jar。任何人都有关于JVM如何读取的资源或信息,或者JVM使用类路径中指定的jar来做什么?关于JVM内部的类路径初始化

我只是好奇JVM如何处理类路径。

谢谢。

回答

2

线性读取类路径,以便在请求类时,Java会在其类路径中找到它的第一个实例。这就是说,启动Java时实际上有三个类路径级别。第一个是包含java核心jar(java.lang等)的引导类路径。第二个是扩展类路径,它包含Java安装的扩展(ext)目录中找到的任何jar。第三个是用户指定的正在运行的程序的类路径。这些类路径将始终按照引导程序,扩展名以及用户指定的类路径的顺序进行线性读取。这是防止某人在正常程序中重写java.lang类的原因。第一个类发现,即使在类路径中稍后有另一个匹配,匹配总是会获胜。

+0

“读取类路径”是什么意思?听起来,jvm在一次读取一个jar文件,jvm对每个jar文件做了什么?它是否添加了某种内部缓存? – user826323 2012-07-26 18:45:21