类路径和构建路径之间有什么区别

时间:2010-08-20 08:59:34

标签: java classpath buildpath

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

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

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

7 个答案:

答案 0 :(得分:88)

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

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

答案 1 :(得分:47)

类路径是告诉(标准)Java编译器和Java运行库在哪里查找编译类的传统方法。它通常是一系列JAR文件名和目录名。编译器和运行时系统使用的类路径不必相同,但它们通常应该,特别是对于一个小项目。

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

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

(如果您正在为项目使用Maven,则IDE构建路径机制是POM文件中声明的依赖项的辅助。例如,使用Eclipse和m2eclipse,构建路径是从POM文件合成的。)

答案 2 :(得分:26)

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

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

答案 3 :(得分:4)

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

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

  

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

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

有关详细信息,请参阅thisthis

答案 4 :(得分:4)

我想补充说明Andreas_D的答案,解释IDE /编译器需要构建路径来查找代码使用的外部包和类我们有时将这些称为'依赖项'

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

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

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

另请注意: Classpath供JVM使用。

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

答案 5 :(得分:1)

类路径from Wikipedia):

  

执行Java时,类似于经典的动态加载行为   程序,Java虚拟机懒惰地查找和加载类(它   仅在首次使用该类时才加载该类的字节码)。的   classpath告诉Java在文件系统中查找文件的位置   定义这些类。

     

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

     

bootstrap类:Java的基本类   平台(包含Java类库的公共类,以及   要使该库成为必需的私有类   功能)。

     

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

     

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

     

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

简单地说-在程序运行时,JVM仅根据需要加载类。当需要一个类时,JVM将依靠类路径来知道从何处加载字节码(即:.class文件)。

另一方面,

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

答案 6 :(得分:0)

Environment variable是一个全局系统变量,可由操作系统(OS)下运行的所有进程访问。

PATHCLASSPATHenvironment variables

PATH:维护目录列表。操作系统在PATH条目中搜索可执行程序,例如Java编译器(javac)和Java运行时(java)。

CLASSPATH:维护目录(包含许多Java类文件.class)和JAR文件(Java类.jar的单文件存档)的列表。 Java编译器和Java运行时在CLASSPATH条目中搜索程序中引用的Java类。

用户类别搜索路径(简称CLASSPATH):按以下顺序确定:

  1. 默认为current working directory (.)
  2. classpath environment variable中的条目,它将覆盖默认条目。
  3. -cp(或-classpath)命令行选项中的条目,该选项将覆盖classpath环境变量。
  4. 运行时命令行选项-jar,它将覆盖以上所有内容。

了解更多here