如何使用清单创建可执行的 JAR 文件

JavaJavaBeginner
立即练习

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

简介

Java 归档文件(JAR)是打包和分发 Java 应用程序的一种常用方式。在本教程中,你将学习如何使用自定义清单创建可执行的 JAR 文件,这使你能够为 Java 应用程序指定主类和其他元数据。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL java(("Java")) -.-> java/ObjectOrientedandAdvancedConceptsGroup(["Object-Oriented and Advanced Concepts"]) java(("Java")) -.-> java/FileandIOManagementGroup(["File and I/O Management"]) java/ObjectOrientedandAdvancedConceptsGroup -.-> java/classes_objects("Classes/Objects") java/ObjectOrientedandAdvancedConceptsGroup -.-> java/packages_api("Packages / API") java/FileandIOManagementGroup -.-> java/files("Files") java/FileandIOManagementGroup -.-> java/create_write_files("Create/Write Files") java/FileandIOManagementGroup -.-> java/read_files("Read Files") subgraph Lab Skills java/classes_objects -.-> lab-413987{{"如何使用清单创建可执行的 JAR 文件"}} java/packages_api -.-> lab-413987{{"如何使用清单创建可执行的 JAR 文件"}} java/files -.-> lab-413987{{"如何使用清单创建可执行的 JAR 文件"}} java/create_write_files -.-> lab-413987{{"如何使用清单创建可执行的 JAR 文件"}} java/read_files -.-> lab-413987{{"如何使用清单创建可执行的 JAR 文件"}} end

理解 Java 归档文件(JAR)

Java 归档文件(JAR)是一种用于打包 Java 应用程序和库的文件格式。JAR 本质上是 ZIP 文件,其中包含已编译的 Java 类、资源和元数据。JAR 文件的主要目的是分发和部署 Java 应用程序及库。

什么是 JAR 文件?

JAR(Java 归档)文件是一种用于将 Java 类、资源和元数据捆绑到单个文件中的文件格式。JAR 文件基于 ZIP 文件格式,这意味着它们可以包含压缩文件和目录。这使得分发和部署 Java 应用程序及库变得更加容易,因为所有必要的文件都包含在单个文件中。

为什么使用 JAR 文件?

使用 JAR 文件有几个好处:

  1. 打包与分发:JAR 文件使打包和分发 Java 应用程序及库变得更加容易。所有必要的文件都包含在单个文件中,使得分发和安装更加简单。
  2. 压缩:JAR 文件可以压缩文件内容,减小总体文件大小,从而加快下载和安装速度。
  3. 类路径管理:JAR 文件可以添加到 Java 应用程序的类路径中,便于管理应用程序所需的依赖项和资源。
  4. 可执行 JAR:JAR 文件可以设置为可执行,允许用户直接从 JAR 文件运行应用程序,而无需安装单独的 Java 运行时环境。

JAR 文件结构

JAR 文件包含以下组件:

  • 已编译的 Java 类:构成应用程序或库的已编译 Java 类。
  • 资源:应用程序或库所需的任何资源,如图像、配置文件或数据文件。
  • 清单文件:一个特殊的文件,包含有关 JAR 文件的元数据,如主类、类路径和其他信息。

JAR 文件的结构可以使用 mermaid 图表可视化:

graph TD A[JAR 文件] --> B[已编译的 Java 类] A --> C[资源] A --> D[清单文件]

通过了解 JAR 文件的结构和用途,你可以在 Java 开发项目中有效地创建和使用它们。

创建可执行 JAR 文件

要创建可执行的 JAR 文件,你需要指定一个主类,当运行该 JAR 文件时将执行这个主类。这是通过在 JAR 文件的清单文件中添加一个特殊条目来完成的。

清单文件

清单文件是 JAR 文件中的一个特殊文件,它包含有关 JAR 内容的元数据。它位于 JAR 文件内的路径 META-INF/MANIFEST.MF 处。

清单文件可以包含各种条目,但对于创建可执行 JAR 来说最重要的是 Main-Class 条目。此条目指定在运行 JAR 文件时应执行的主类的完全限定名称。

创建可执行 JAR

要创建可执行的 JAR 文件,请执行以下步骤:

  1. 编译你的 Java 代码,并确保所有必要的类和资源都在正确的目录中。

  2. 创建一个包含 Main-Class 条目的清单文件。例如:

    Manifest-Version: 1.0
    Main-Class: com.example.MyMainClass
  3. 使用 jar 命令将编译后的类、资源和清单文件打包成一个 JAR 文件:

    jar cvfm my-app.jar manifest.mf -C bin/.

    此命令创建一个名为 my-app.jar 的 JAR 文件,其中包含 bin/ 目录的内容以及 manifest.mf 文件作为清单。

  4. 现在你可以使用 java 命令运行可执行 JAR 文件:

    java -jar my-app.jar

创建可执行 JAR 文件的过程可以使用 mermaid 图表可视化:

graph TD A[编译 Java 代码] --> B[创建清单文件] B --> C[打包成 JAR 文件] C --> D[运行可执行 JAR]

通过遵循这些步骤,你可以创建一个可轻松分发并在任何安装了 Java 运行时环境的系统上运行的可执行 JAR 文件。

自定义 JAR 清单

JAR 清单文件提供了一种存储有关 JAR 文件内容的元数据的方式。此元数据可用于自定义 JAR 文件的行为及其执行方式。在本节中,我们将探讨一些可用于自定义 JAR 文件的常见清单条目。

常见清单条目

以下是一些最常用的清单条目:

条目 描述
Main-Class 指定运行 JAR 文件时应执行的主类的完全限定名称。
Class-Path 指定在执行 JAR 文件时应添加到类路径的 JAR 文件或其他资源的列表。
Created-By 指定用于创建 JAR 文件的工具的名称和版本。
Sealed 指定 JAR 文件是否已密封,这意味着其内容不能被修改。
Implementation-TitleImplementation-VersionImplementation-Vendor 提供有关 JAR 文件实现的信息。
Specification-TitleSpecification-VersionSpecification-Vendor 提供有关 JAR 文件所实现规范的信息。

自定义清单

要自定义清单文件,你可以创建一个包含所需条目的文本文件,然后使用 jar 命令将 JAR 文件与自定义清单一起打包。

例如,要使用自定义清单创建一个 JAR 文件,你可以使用以下命令:

jar cvfm my-app.jar manifest.mf -C bin/.

这里,manifest.mf 是包含自定义清单条目的文件的名称。

你还可以使用 jar 命令用新清单更新现有 JAR 文件:

jar ufm existing-app.jar new-manifest.mf

此命令使用 new-manifest.mf 文件中的条目更新 existing-app.jar 文件的清单。

通过自定义 JAR 清单,你可以提供有关你的 Java 应用程序的其他信息,并控制其执行方式。

总结

在本教程结束时,你将对 Java 归档文件(JAR)以及如何使用自定义清单创建可执行 JAR 文件有扎实的理解。这些知识将帮助你更有效地打包和分发你的 Java 应用程序。