The jar Command

名称

jar - 为类和资源创建存档,并从存档中操作或恢复单个类或资源

概要

jar [选项 ...] [ [--release 版本] [-C 目录] 文件] ...

描述

jar 命令是一个通用的归档和压缩工具,基于 ZIP 和 ZLIB 压缩格式。最初,jar 命令设计用于打包 Java 小程序(自 JDK 11 起不再支持)或应用程序;然而,从 JDK 9 开始,用户可以使用 jar 命令创建模块化 JAR。为了传输和部署,通常更方便将模块打包为模块化 JAR。

jar 命令的语法类似于 tar 命令的语法。它有几种主要操作模式,由其中一个必需的操作参数定义。其他参数要么是修改操作行为的选项,要么是执行操作所必需的。

当模块或应用程序的组件(文件、图像和声音)合并到单个存档中时,它们可以通过 Java 代理(如浏览器)在单个 HTTP 事务中下载,而不需要为每个部分建立新连接。这显著提高了下载速度。jar 命令还会压缩文件,进一步提高下载速度。jar 命令还可以使文件中的单个条目签名,以便验证它们的来源。无论是否压缩,JAR 文件都可以用作类路径条目。

当您在给定目录的根目录或 .jar 存档的根目录中包含模块描述符 module-info.class 时,存档将成为模块化 JAR。在创建或更新模块化 JAR 或更新现有非模块化 JAR 时,下面描述的操作(仅在创建和更新模式中有效的操作修饰符)仅在创建或更新模块化 JAR 或更新现有非模块化 JAR 时有效:

注意:

所有长选项的必需或可选参数对于任何相应的短选项也是必需或可选的。

主要操作模式

在使用 jar 命令时,您必须指定要执行的操作。通过包含本节中描述的适当操作参数,您可以为 jar 命令指定操作模式。您可以将操作参数与其他单字母选项混合使用。通常,操作参数是在命令行上指定的第一个参数。

-c--create
创建存档。
-i 文件--generate-index=文件
为指定的 JAR 文件生成索引信息。此选项已被弃用,可能会在将来的版本中删除。
-t--list
列出存档的内容表。
-u--update
更新现有的 JAR 文件。
-x--extract
从存档中提取指定(或所有)文件。
-d--describe-module
打印模块描述符或自动模块名称。

任何模式中有效的操作修饰符

您可以使用以下选项自定义包含在 jar 命令中的任何操作模式的操作。

-C 目录

更改指定的目录,并在命令行末尾包含指定的 文件

jar [选项 ...] [ [--release 版本] [-C dir] files]

-f 文件--file=文件
指定存档文件名。
--release 版本

创建多版本 JAR 文件。将选项后指定的所有文件放入名为 META-INF/versions/版本/ 的 JAR 文件的版本化目录中,其中 版本 必须是大于等于 9 的正整数值。

在运行时,如果 JAR 中存在一个类的多个版本,则 JDK 将使用它找到的第一个版本,首先在其 版本 数与 JDK 的主版本号匹配的目录树中搜索。然后将查找具有逐渐较低 版本 数的目录,最后查找 JAR 的根目录。

-v--verbose
将详细输出发送或打印到标准输出。

仅在创建和更新模式中有效的操作修饰符

您可以使用以下选项自定义创建和更新主操作模式的操作:

-e 类名--main-class=类名
指定独立应用程序的应用程序入口点,该应用程序捆绑到模块化或可执行的模块化 JAR 文件中。
-m 文件--manifest=文件
包含给定清单文件中的清单信息。
-M--no-manifest
不为条目创建清单文件。
--module-version=版本
在创建或更新模块化 JAR 文件或更新非模块化 JAR 文件时指定模块版本。
--hash-modules=模式
计算并记录与正在创建的模块化 JAR 文件或正在更新的非模块化 JAR 文件直接或间接依赖的模块的哈希值。
-p--module-path
指定生成哈希的模块依赖项的位置。
@文件
从文本文件中读取 jar 选项和文件名。

仅在创建、更新和生成索引模式中有效的操作修饰符

您可以使用以下选项自定义创建(-c--create)、更新(-u--update)和生成索引(-i--generate-index=文件)主操作模式的操作:

-0--no-compress
存储时不使用 ZIP 压缩。
--date=时间戳
使用 ISO-8601 扩展偏移日期时间格式(可选时区)的时间戳,用于条目的时间戳,例如 "2022-02-12T12:30:00-05:00"。

其他选项

jar 命令识别以下选项,这些选项不与操作模式一起使用:

-h--help[:compat]
显示 jar 命令的命令行帮助,或者可选地显示兼容性帮助。
--help-extra
显示额外选项的帮助。
--version
打印程序版本。

jar 命令语法示例