88

我对这两个术语感到困惑。

另外我应该怎么做才能在 Spring MVC 项目的 src 文件夹下创建一个文件?当我使用 File 对象创建时,它会在 C:\SpringSourceTool 中创建文件...我猜这是 ClassPath 对吗?

如何获取applicationcontext应用程序的文件夹或根目录?

4

6 回答 6

105

构建路径用于构建您的应用程序。它包含编译应用程序所需的所有源文件和所有 Java 库。

路径用于执行应用程序。这包括运行 java 应用程序所需的所有 java 类和库。.Classpath 是必需的,如果 java 虚拟机找不到用户定义的路径,则使用默认路径。(jar 清单中的CLASSPATH环境变量、-cp标志或属性)Class-Path:

于 2010-08-20T09:07:25.870 回答
54

类路径是告诉(标准)Java 编译器和 Java 运行时在哪里找到已编译类的常规方式。它通常是一系列 JAR 文件名和目录名。编译器和运行时系统使用的类路径不必相同,但它们通常应该相同,尤其对于小型项目。

Buildpath 不是标准的 Java 术语。它是典型 IDE 指定组成应用程序的“项目”之间关系的更丰富方式的术语。IDE 使用它来确定编译 Java 代码的类路径和源路径,以及运行它的类路径。IDE 还使用构建路径来确定如何将代码及其依赖项打包为(例如)WAR 文件。

例如,一个项目的 Eclipse 构建路径包括它所依赖的其他项目,并列出该项目包含/依赖的任何其他库 JAR。它还列出了当前项目中下游项目可以依赖的包。

(如果您在项目中使用 Maven,则 IDE 构建路径机制仅次于 POM 文件中声明的依赖项。例如,将 Eclipse 与 m2eclipse 一起使用,构建路径是从 POM 文件合成的。)

于 2010-08-20T11:08:11.213 回答
28

类路径在运行时用于加载已编译的类和资源。

构建路径在编译时用于查找构建项目所需的依赖项。

于 2010-08-20T09:03:13.210 回答
7

我想添加到 Andreas_D 的答案中,以解释IDE/编译器需要构建路径来定位您的代码使用的外部包和类。 我们有时将这些称为“依赖项”

注意:这些外部包可能打包在一个压缩的 .jar 文件中,或者实际上,可能有几个 jar 文件打包在一个'library'中。一个库或一组库通常构成一个“框架”

如果您的代码需要其他人编写的代码,您可以使用命令将它们导入到您的类中。import但是,这个命令本身是不够的,因为编译器或 IDE 需要知道这些类的位置。您在构建路径中指定它。

classpath另一方面,告诉运行您的应用程序的 JVM 在实际执行代码期间在哪里可以找到任何依赖项。

还要注意: 类路径供 JVM 使用。

Buildpath 供 IDE/编译器使用,是一种从您的开发环境构建类路径的方法。当您通过 IDE 配置构建路径时,您也在项目中配置了一个名为 .classpath 的隐藏文件。这用于在部署时为 JVM 提供类路径。

于 2018-03-20T13:32:56.280 回答
4

每个 Java 项目都有自己的构建路径,该路径指定编译项目所需的所有依赖项。这些依赖项可能来自工作区中的其他 Java 项目、来自 Java 归档 .jar 文件或来自包含 .class 文件的文件夹。

在 CLASSPATH 环境中,您只需要指定 .class 文件(即 jar、zip 文件 - 在 jar、zip 文件中,您只会找到 java 类),即您正在帮助 Java 虚拟机 (JVM) 查找 Java 类文件

另外我应该怎么做才能在 Spring MVC 项目的 src 文件夹下创建一个文件?当我使用 File 对象创建时,它会在 C:\SpringSourceTool...

这是 JVM 启动的地方,如果您想在其他地方创建文件,请使用此处的相对路径。

有关更多信息,请参阅

于 2010-08-20T09:01:46.417 回答
2

类路径来自维基百科):

与经典的动态加载行为类似,在执行 Java 程序时,Java 虚拟机会延迟查找并加载类(仅在类第一次使用时才加载该类的字节码)。类路径告诉 Java 在文件系统中的何处查找定义这些类的文件。

虚拟机按以下顺序搜索和加载类:

引导类:Java 平台的基础类(包括 Java 类库的公共类和该库正常运行所必需的私有类)。

扩展类:在 JRE 或 JDK 的扩展目录中的包,

jre/lib/ext/ 用户定义的包和库

默认情况下,只有 JDK 标准 API 和扩展包的包是可访问的,无需设置在哪里找到它们。所有用户定义的包和库的路径必须在命令行中设置(或在与包含类的 Jar 文件关联的清单中)。

简而言之 - 当您的程序运行时,JVM 仅在需要时加载类。当需要一个类时,JVM 将依赖于它知道从哪里加载字节码(即:.class文件)的类路径。

另一方面,构建路径通常由 IDE(例如 Eclipse)使用,以了解在哪里查找编译项目源代码所需的其他库。运行时不使用构建路径。

于 2019-12-27T16:08:19.797 回答