类路径意味着搜索的工作方式
类路径的目的是告诉 JVM 在哪里查找类和其他资源。类路径和搜索过程的含义是交织在一起的。
类路径是搜索路径的一种形式,它指定查找资源的位置序列。在标准类路径中,这些位置是主机文件系统中的目录,JAR 文件或 ZIP 文件。在每种情况下,该位置都是将被搜索的命名空间的根。
在类路径上搜索类的标准过程如下:
-
将类名映射到相对类文件路径名
RP
。类别名称到类文件名的映射在别处描述。 -
对于类路径中的每个条目
E
:- 如果条目是文件系统目录:
- 相对于
E
解析RP
,得到绝对路径名AP
。 - 测试
AP
是否是现有文件的路径。 - 如果是,请从该文件加载该类
- 相对于
- 如果条目是 JAR 或 ZIP 文件:
- 在 JAR / ZIP 文件索引中查找
RP
。 - 如果存在相应的 JAR / ZIP 文件条目,请从该条目加载该类。
- 在 JAR / ZIP 文件索引中查找
- 如果条目是文件系统目录:
在类路径上搜索资源的过程取决于资源路径是绝对路径还是相对路径。对于绝对资源路径,过程如上所述。对于使用 Class.getResource
或 Class.getResourceAsStream
解析的相对资源路径,在搜索之前会先添加类包的路径。
(注意这些是标准 Java 类加载器实现的过程。自定义类加载器可能以不同方式执行搜索。)