2010-08-20 127 views
71

我对这两个术语感到困惑。Class Path和Build Path有什么区别

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

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

回答

80

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

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

+0

但javac需要一个类路径参数。可以说,这个参数“重载”用于指定构建路径吗? – aioobe 2010-08-20 10:00:45

+2

编号_classpath_参数是编译器提示他应该在运行时提供/提供的参数,因为您不会构建自己使用的每个类(例如JFC,Libraries,...)。 _buildpath_包含源和/或源/编译的依赖关系以及在哪里查找它们。 – 2010-08-20 10:18:17

+0

开发插件时,我将所有需要的库添加到类路径中,但无法导入任何内容。 Eclipse直到我将它们添加到构建路径时才看到它们。 – Bax 2012-10-11 13:25:16

3

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

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

而且我应该怎么做才能创造一个Spring MVC的 项目的src目录下的文件 ?当我创建使用文件 反对它创建的文件中 C:\ SpringSourceTool ...

这是JVM启动后,如果你想别人创建文件,其中,使用从这里相对路径。

有关更多信息,请参阅thisthis

+0

你甚至没有提到你的答案中的构建路径。 – aioobe 2010-08-20 09:04:33

+0

感谢@aioobe,我最初错过了,现在编辑。 – pavanlimo 2010-08-20 09:13:02

23

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

编译时使用构建路径来查找构建项目所需的依赖关系。

+0

您可以说类路径用于定位'.class'文件(和其他编译资源),而构建路径用于查找需要编译的源文件吗? – Adam 2017-02-25 00:49:53

+0

@亚当我不认为这是完全正确的。构建路径有时需要.class文件来编译源文件。所以构建路径也使用幕后的类路径。如果您花费一些时间使用java CLI编译和运行java项目,您可以看到这一点。 javac和java命令都有一个类路径选项,因为它们都可能需要它。 – 2018-01-19 20:46:14

38

classpath是通知Java编译器和Java运行时找到编译类的位置的常规方式。它通常是一系列JAR文件名和目录名。由编译器和运行时系统所使用的类路径不必须相同,但它们通常“应该是*,尤其是对于一个小项目。

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

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

(如果你使用Maven,为您的项目中,IDE构建路径机制是继发于POM文件中声明的依赖关系。例如,使用Eclipse与m2eclipse的,在构建路径从POM文件合成。)

相关问题