设置 Java 构建路径

本节描述如何设置 Java 构建路径。构建路径是用于构建 Java 项目(IJavaProject)的类路径。

类路径只是一组用于描述可用类型的类路径条目(IClassPathEntry)。类型能够以源或二进制格式出现,并且条目在路径中的顺序定义了用于在构建期间解析类型的查找顺序。

Java 构建路径反映在 Java 项目元素的结构中。可以查询项目的包段根目录(IPackageFragmentRoot)。每个类路径条目都映射至一个或多个包段根目录,每个包段根目录进一步包含一组包段。

此处对构建路径的讨论不涉及 Java 运行时路径,Java 运行时路径可以独立于构建路径进行定义。(有关对运行时类路径的讨论,请参阅运行 Java 代码。)

更改构建路径

可以通过对相应项目的 Java 元素使用 setRawClasspath 来使用程序更改项目的构建路径。以下代码设置项目资源的类路径:

	IProject project = ... // get some project resource
	IJavaProject javaProject = JavaCore.create(project);
	IClasspathEntry[] newClasspath = ...;
	javaProject.setRawClasspath(newClasspath, someProgressMonitor);
	

(注意:术语“原始”类路径用来强调尚未解析任何用来描述条目位置的变量的事实。)

Java 构建路径保存在项目的文件结构中的名为“.classpath”的文件中。此文件可用来提供一种方法来通过某些源代码存储库与其它项目共享 Java 构建路径设置。需要特别指出的是,由于可能会毁坏此文件,所以不应该手工编辑它。

类路径条目

可以使用对 JavaCore 定义的工厂方法来定义类路径条目。类路径条目可以引用下列任何一项:

排除模式

可以对类路径源条目指定排除模式,排除模式防止源文件夹中的特定资源在类路径中可见。对模式的使用允许过滤掉资源树的指定部分。每个排除模式路径都是相对于类路径条目的,并且使用与 Ant 相似的模式机制。只要外部模式排除内部模式,排除模式就可以用来指定嵌套的源文件夹。  

关于排除模式的更多详细信息,请参阅 getExclusionPatterns()

Java 项目 API isOnClasspath 在确定特定资源是否在类路径上之前将检查包括和排除模式。

注释:

包括模式

也可以对类路径源条目指定包含模式,这显式地将资源定义为在类路径中是可视的。当未指定包含模式时,则源条目包括以此源条目的路径为根的资源树中的所有相关文件。指定一个或多个包括模式意味着只能包含资源树的指定部分。每个指定的路径都必须是相对路径,并且将解释为相对于此源条目的路径。文件模式是区分大小写的。通过这些模式中的一个或多个模式匹配 的文件将包括在相应的包段中根目录中,除非它被此条目的一个或多个排除模式排除。

请参阅 getExclusionPatterns() 以获取路径模式的语法和语义的论述。缺少任何包括模式在语义上等同于显式包括模式 **

Java 项目 API isOnClasspath 在确定特定资源是否在类路径上之前将检查包括和排除模式。

示例:

类路径解析

因为类路径变量和容器允许定义动态绑定的类路径条目,所以类路径 API 对原始类路径和已解析的类路径加以区分。原始类路径是最初使用 setRawClasspath 对 Java 项目设置的类路径,并且可以通过向项目请求 getRawClasspath 来进一步查询它。可以使用 getResolvedClasspath 来查询已解析的类路径。此操作将触发对解析类路径所需的任何变量和容器的初始化。许多“Java 模型”操作都隐式地导致解析 Java 构建路径。例如,计算项目的包段根目录就需要解析构建路径。