【问题标题】:What is the difference between Class Path and Build Path类路径和构建路径有什么区别
【发布时间】:2019-12-30 22:28:10
【问题描述】:

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

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

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

【问题讨论】:

    标签: java classpath buildpath


    【解决方案1】:

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

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

    【讨论】:

    • 但是 javac 需要一个类路径参数。有人可以说这个参数“重载”了指定构建路径吗?
    • 没有。 classpath 参数是对编译器的提示,他应该期望在运行时可用/提供什么,因为您不会构建自己使用的每个类(例如 JFC、Libraries,...)。 buildpath 包含源和/或源/编译的依赖项以及在哪里查找它们。
    • 在开发插件时,我将所有需要的库添加到类路径中,但无法导入任何内容。在我将它们添加到构建路径之前,Eclipse 没有看到它们。
    【解决方案2】:

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

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

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

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

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

      • 能不能说class路径是用来定位.class文件(以及其他编译资源),而build路径是用来定位需要编译的源文件?
      • @Adam 我认为这并不完全正确。构建路径有时需要 .class 文件来编译源文件。所以构建路径也使用了幕后的类路径。如果您花一些时间使用 java CLI 编译和运行 java 项目,您可以看到这一点。 javac 和 java 命令都有一个类路径选项,因为它们都可能需要它。
      【解决方案4】:

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

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

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

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

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

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

      【讨论】:

        【解决方案5】:

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

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

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

        这是 JVM 的启动位置,如果要在其他位置创建文件,请使用此处的相对路径。

        请参阅thisthis 了解更多信息。

        【讨论】:

        • 您甚至没有在答案中提及构建路径。
        【解决方案6】:

        类路径 (from Wikipedia):

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

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

        引导类:Java 的基础类 平台(包括 Java 类库的公共类,以及 这个库所必需的私有类 功能)。

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

        jre/lib/ext/ 用户定义的包和 图书馆

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

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

        另一方面,

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2012-05-04
          • 1970-01-01
          • 2020-05-31
          • 2020-04-27
          • 2012-07-14
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多