tar打包压缩命令_tar打包压缩命令

tar打包压缩命令_tar打包压缩命令jar命令是Java开发过程中一个非常实用的工具,提供了打包、压缩和管理Java类文件和资源文件的功能

在这里插入图片描述

1️⃣ 概念

Java的可执行命令程序jar(Java Archive)最早作为一项功能在JDK 1.0中引入。它的设计目的是为了方便在Java平台上进行打包、分发和部署应用程序jar文件可以将多个Java类、资源文件和其他依赖项打包成一个单独的归档文件,以实现更简单的应用程序管理和传输。

jar文件是一种归档文件格式,使用.jar扩展名,使用ZIP算法进行压缩。它类似于其他操作系统上的压缩文件(如.zip.tar.gz),但是专门用于存储Java程序。jar文件可以包含Java字节码文件、资源文件、配置文件、库文件等相关组件。

jar文件具有以下几个主要作用:

  • 打包:通过将多个.class文件和相关资源文件打包到一个jar文件中,方便分发和部署Java应用程序;
  • 压缩jar文件使用ZIP算法进行压缩,可以减小文件大小,加快传输和下载速度;
  • 依赖管理:将应用程序的依赖项打包在同一个jar文件中,简化应用程序的部署和配置过程。

2️⃣ 优势和缺点

优点

  • 简化部署:jar文件集成了Java应用程序所需的所有组件,使得部署变得更加简单和可靠;
  • 可移植性:jar文件可以在不同的操作系统上运行,无需做额外适配工作;
  • 安全性:jar文件可以使用数字签名进行验签,确保文件完整性并防止篡改。

缺点

  • 文件大小:由于jar文件需要包含所有相关资源,可能会导致文件较大;
  • 资源管理:如果依赖项的版本或配置发生变化,需要重新打包并传输更新的jar文件。

3️⃣ 使用

3.1 语法格式:创建jar文件

使用jar命令来创建一个jar文件时的完整命令格式如下:

jar { 
   ctxui}[vfmn0PMe] [jar-file] [manifest-file] [entry-point] [-C dir] files ...

其中各项的含义如下:

  • {ctxui} :表示必填参数组,大括号内的内容是一组必需的参数,需要根据实际情况进行替换;
  • [vfmn0PMe]:表示可选参数,具体每一项参数的含义及作用在下文汇总归纳;
  • [jar-file]: 指定要创建或操作的 JAR 文件的名称;
  • [manifest-file]: 指定自定义清单文件的路径和名称。清单文件是一个特殊的文本文件,可以包含关于 JAR 文件的元数据信息,如版本号、作者、依赖项等;
  • [entry-point]: 指定 JAR 文件的可执行入口点(主类)。在运行可执行 JAR 文件时,指定的类将作为程序的起点;
  • -C dir: 在压缩或更新 JAR 文件中的文件时,该选项允许切换到指定的目录,并执行下一个参数所指向的操作;
  • files ...: 要包含在 JAR 文件中的文件列表。这些文件可以是 Java 类文件、资源文件、配置文件、库文件等。

jar命令支持许多可选参数来控制打包过程。汇总全部的可选参数如下表:

参数 作用
-c 创建新档案
-t 列出档案目录
-x 从档案中提取指定的 (或所有) 文件
-u 更新现有档案
-v 在标准输出中生成详细输出
-f 指定档案文件名
-m 包含指定清单文件中的清单信息
-n 创建新档案后执行 Pack200 规范化
-e 为捆绑到可执行 jar 文件的独立应用程序指定应用程序入口点
-0 仅存储; 不使用任何 ZIP 压缩
-P 保留文件名中的前导 ‘/’ (绝对路径) 和 “…” (父目录) 组件
-M 不创建条目的清单文件
-i 为指定的 jar 文件生成索引信息
-C 更改为指定的目录并包含以下文件。如果任何文件为目录, 则对其进行递归处理。
清单文件名, 档案文件名和入口点名称的指定顺序与m’, ‘f’ 和 ‘e’ 标记的指定顺序相同

需要注意的是命令使用时,必须指定 {ctxu} 中的任一选项。下面主要介绍以下一些常用的 jar命令必选或可选参数:

  • -c:创建jar文件;
  • -t:列出jar文件内容;
  • -i:生成jar文件的索引信息;
  • -v:输出详细信息;
  • -f:指定jar文件名;
  • -e:设置可执行类(主类)的入口点。

3.1.1 参数:-cf

jar -cf 命令,用于创建 JAR(Java 归档)文件并指定jar文件名。JAR 文件是一种压缩文件格式,用来打包 Java 类、资源文件和其他相关文件。

下面是一个示例,演示如何使用 jar -cf 命令创建一个 JAR 文件:

假设有以下目录结构:

myapp/
└── com
    └── example
        ├── Main.class
        └── utils
            ├── Util1.class
            └── Util2.class

为了将这些文件打包成 JAR 文件,可以执行以下命令:

jar -cf myapp.jar  .

该命令的含义如下:

  • -cf:创建并指定要生成的归档文件的名称,这里是 myapp.jar
  • .:表示将当前目录及其子目录中的所有文件和目录添加到 JAR 文件。

执行完命令后,会生成一个名为 myapp.jar 的 JAR 文件,可以将该文件作为一个整体部署或与其他程序共享。

注意:打包时应该只包括编译后的 .class 文件。通常情况下,应该先编译 Java 源代码文件,然后再使用 jar -c 命令将编译后的 .class 文件打包成 JAR 文件。

查看生成的JAR 文件:

在这里插入图片描述

3.1.2 参数:-tf

jar -tf 用于查看 JAR 文件的内容列表。通过执行 jar -tf 命令,您可以快速查看 指定JAR 文件中包含哪些文件。

以下是使用 jar -tf 命令查看 JAR 文件内容的示例:

jar -tf myapp.jar

该命令的含义: -tf:显示归档文件 myapp.jar 中的文件列表。

执行命令后,将在终端或命令提示符窗口中显示类似如下的输出:

META-INF/
META-INF/MANIFEST.MF
com/
com/xiaoshan/
com/xiaoshan/allclasses-frame.html
com/xiaoshan/allclasses-noframe.html
com/xiaoshan/ArraysDemo.java
com/xiaoshan/com/
com/xiaoshan/com/xiaoshan/
com/xiaoshan/com/xiaoshan/MyClass.html
com/xiaoshan/com/xiaoshan/package-frame.html
com/xiaoshan/com/xiaoshan/package-summary.html
com/xiaoshan/com/xiaoshan/package-tree.html
com/xiaoshan/constant-values.html
com/xiaoshan/deprecated-list.html
com/xiaoshan/help-doc.html
com/xiaoshan/index-all.html
com/xiaoshan/index.html
com/xiaoshan/MyClass.class
com/xiaoshan/MyClass.java
com/xiaoshan/overview-tree.html
com/xiaoshan/package-list
com/xiaoshan/RuntimeExample.java
com/xiaoshan/script.js
com/xiaoshan/stylesheet.css
com/xiaoshan/SystemExample.java

输出显示了 myapp.jar 中包含的文件和目录的列表。在本示例中,JAR 文件中包括了 META-INF 目录、com/xiaoshan 目录,以及这些目录中的 .class 文件和 MANIFEST.MF 文件。

通过使用 jar -tf 命令,可以方便地浏览 JAR 文件的内容,以确保文件被正确地打包进了 JAR 文件中。

3.1.3 参数:-i

jar -i 命令用于显示或更新 JAR 文件的索引。JAR 文件索引是一个特殊文件,用于加快从 JAR 文件中获取类、资源和其他文件的速度。

以下是使用 jar -i 命令的示例:

执行以下命令来查看或更新其索引:

jar -i myapp.jar

执行命令后,将在终端或命令提示符窗口中显示类似如下的输出:

Indexing 22 files...

这表明正在对 JAR 文件中的文件进行索引。如果 JAR 文件之前没有索引,则创建索引。如果已存在索引,则会更新索引以反映 JAR 文件的最新内容。

JAR 文件索引使得在需要从 JAR 文件中获取文件时,可以更快地定位到所需的文件,提高了读取和加载文件的效率。

注意,使用 jar -i 命令来操作 JAR 文件索引通常是自动完成的,不需要手动执行此命令。只有在特定情况下,比如需要强制重新生成索引或需要手动检查索引的状态时,才需要使用此命令。

3.1.4 参数:-v

jar -v 命令用于在终端或命令提示符窗口中显示详细信息,包括 JAR 文件的版本、创建时间、压缩率等。

以下是使用 jar -v 命令的示例:

执行以下命令来查看其详细信息:

jar -tvf myapp.jar

该命令的含义:-tvf:显示归档文件 myapp.jar 的详细信息,并包括文件列表。

执行命令后,将在终端或命令提示符窗口中显示类似如下的输出:

    94 Fri Jun 30 20:36:06 CST 2023 META-INF/INDEX.LIST
     0 Fri Jun 30 20:25:38 CST 2023 META-INF/
    69 Fri Jun 30 20:25:38 CST 2023 META-INF/MANIFEST.MF
     0 Tue Jun 27 22:08:54 CST 2023 com/
     0 Thu Jun 29 22:31:44 CST 2023 com/xiaoshan/
   642 Thu Jun 29 22:31:44 CST 2023 com/xiaoshan/allclasses-frame.html
   622 Thu Jun 29 22:31:44 CST 2023 com/xiaoshan/allclasses-noframe.html
  2846 Wed Jun 28 10:49:02 CST 2023 com/xiaoshan/ArraysDemo.java
     0 Thu Jun 29 22:31:44 CST 2023 com/xiaoshan/com/
     0 Thu Jun 29 22:31:44 CST 2023 com/xiaoshan/com/xiaoshan/
  8063 Thu Jun 29 22:31:44 CST 2023 com/xiaoshan/com/xiaoshan/MyClass.html
   762 Thu Jun 29 22:31:44 CST 2023 com/xiaoshan/com/xiaoshan/package-frame.html
  4186 Thu Jun 29 22:31:44 CST 2023 com/xiaoshan/com/xiaoshan/package-summary.html
  3885 Thu Jun 29 22:31:44 CST 2023 com/xiaoshan/com/xiaoshan/package-tree.html
  3509 Thu Jun 29 22:31:44 CST 2023 com/xiaoshan/constant-values.html
  3497 Thu Jun 29 22:31:44 CST 2023 com/xiaoshan/deprecated-list.html
  6738 Thu Jun 29 22:31:44 CST 2023 com/xiaoshan/help-doc.html
  4412 Thu Jun 29 22:31:44 CST 2023 com/xiaoshan/index-all.html
  2720 Thu Jun 29 22:31:44 CST 2023 com/xiaoshan/index.html
   551 Wed Jun 28 23:01:46 CST 2023 com/xiaoshan/MyClass.class
   178 Wed Jun 28 22:18:26 CST 2023 com/xiaoshan/MyClass.java
  3899 Thu Jun 29 22:31:44 CST 2023 com/xiaoshan/overview-tree.html
    14 Thu Jun 29 22:31:44 CST 2023 com/xiaoshan/package-list
  2451 Wed Jun 28 14:48:14 CST 2023 com/xiaoshan/RuntimeExample.java
   857 Thu Jun 29 22:31:44 CST 2023 com/xiaoshan/script.js
 13416 Thu Jun 29 22:31:44 CST 2023 com/xiaoshan/stylesheet.css
  2955 Wed Jun 28 16:57:30 CST 2023 com/xiaoshan/SystemExample.java

输出显示了 JAR 文件中包含的文件列表,并显示了每个文件的大小、创建时间以及相对路径。

通过使用 jar -v 命令,可以获得有关 JAR 文件的详细信息,包括文件大小、创建时间和路径等。这样可以帮助了解 JAR 文件的组成以及其中的文件属性。

3.1.5 参数:-e

jar -e 命令用于为可执行的 JAR 文件指定应用程序的入口点。以下是使用 jar -e 命令的示例:

假设我们有一个名为 myapp.jar 的 JAR 文件,并且有一个包含 MyClass 类的 Java 应用程序作为入口点。

可以使用 jar -e 命令将 MyClass 类指定为 JAR 文件的应用程序入口点:

jar -ef myapp.jar com.xiaoshan.MyClass

该命令的含义如下:

  • -ef:为 JAR 文件 myapp.jar 指定应用程序入口点;
  • com.xiaoshan.MyClass:指定应用程序的完全限定类名,即 MyClass 类所在的包路径和类名。

完成以上步骤后,myapp.jar 将会被配置为可执行的 JAR 文件,并且 MyClass 类中的 main 方法将被作为应用程序的入口点。可以使用 java -jar 命令运行该 JAR 文件:

java -jar myapp.jar

执行命令后,将会在终端或命令提示符窗口中显示 “Hello, World!”。

因此,使用 jar -e 命令可以为 JAR 文件指定一个特定的类作为应用程序的入口点。

3.2 运行jar文件

命令 java [-options] -jar jarfile [args...] 用于在 Java 环境中运行可执行的 JAR 文件,并可以提供附加选项和参数。

下面是该命令的各个部分含义的解释:

  • [-options]:选项是可选的,表示可以在此处提供其他 Java 运行时选项。例如,可以使用 -Xmx 选项设置堆内存的最大大小;
  • -jar:这是一个参数,表示后面将指定的文件是一个可执行的 JAR 文件;
  • jarfile:这是要执行的可执行 JAR 文件的名称;
  • [args...]:可选的参数列表,用于向该可执行 JAR 文件传递参数。

通过这个命令,可以执行一个 Java 应用程序,其中包含了预编译的代码和所有所需的依赖项。

Java 解释器(JRE/JDK)将会启动,加载指定的 JAR 文件,并查找 JAR 文件中定义的主类(一般来说是通过 Main-Class 属性指定的类),并运行它作为应用程序的入口点。

综上所述,命令 java [-options] -jar jarfile [args...] 提供了一种方便的方式来运行可执行的 JAR 文件,并且还可以通过选项和参数进行配置和自定义。

4️⃣ 应用场景

jar命令在以下几种常见情况下特别有用:

  1. 创建可执行的JAR文件:通过将Java类文件和资源文件打包到一个JAR文件中,可以方便地分发和执行Java应用程序。通过指定Main-Class属性,可以将一个类标记为JAR文件的入口点,使得它们可以直接运行;

  2. 导出库和依赖:可以使用jar命令将Java库或依赖打包成JAR文件,以便其他开发者可以轻松地将其添加到他们的项目中。这样可以简化项目的构建和部署过程,并提高代码的可重用性;

  3. 模块化开发和部署:通过使用jar命令创建模块化的JAR文件,可以将代码组织为逻辑上独立的模块。这样,开发者可以更容易地管理和更新代码,并解耦不同模块之间的依赖关系。

5️⃣ 注意事项

在使用jar命令时,请注意以下几点:

  1. 理解选项和参数jar命令提供了许多选项来控制打包过程,例如指定入口类、排除特定文件等。请查阅相关文档,了解每个选项的作用以及如何正确使用它们;

  2. 设置主类:对于可执行的JAR文件,需要使用-e选项来设置入口类(即Main-Class)。确保指定的类具有正确的main()方法,这将是应用程序的启动点;

  3. 处理依赖:如果应用程序依赖于其他库或JAR文件,请确保将它们包含在jar打包中,并在运行时正确配置依赖路径;

  4. 版本控制和重复性:始终注意版本控制,避免在同一个JAR文件中包含相同的类或资源文件。这可能导致意想不到的冲突和错误;

  5. 文件路径和编码:在打包过程中,确保提供的文件路径和编码是正确的,以免造成文件丢失或编码问题;

  6. 调试和测试:在打包之前,务必先通过适当的调试和测试来验证您的应用程序。确保在打包后的JAR文件中没有缺失或错误的代码。

🌾 总结

jar命令是Java开发过程中一个非常实用的工具,提供了打包、压缩和管理Java类文件和资源文件的功能。它为我们提供了方便的方式来创建可执行的JAR文件、导出库、打包资源以及模块化开发。然而,在使用jar命令时,我们需要理解选项和参数的含义,并遵循最佳实践,如设置正确的主类、处理依赖关系、版本控制等。

tar打包压缩命令_tar打包压缩命令 今天的文章tar打包压缩命令_tar打包压缩命令分享到此就结束了,感谢您的阅读。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/84806.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注