【Java可执行命令】(五)打包部署工具 jar:深入解析应用程序打包、分发和部署工具jar ~

这篇具有很好参考价值的文章主要介绍了【Java可执行命令】(五)打包部署工具 jar:深入解析应用程序打包、分发和部署工具jar ~。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

【Java可执行命令】(五)打包部署工具 jar:深入解析应用程序打包、分发和部署工具jar ~

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 文件:

【Java可执行命令】(五)打包部署工具 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命令时,我们需要理解选项和参数的含义,并遵循最佳实践,如设置正确的主类、处理依赖关系、版本控制等。

文章来源地址https://www.toymoban.com/news/detail-512475.html

【Java可执行命令】(五)打包部署工具 jar:深入解析应用程序打包、分发和部署工具jar ~

到了这里,关于【Java可执行命令】(五)打包部署工具 jar:深入解析应用程序打包、分发和部署工具jar ~的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • 解决IntelliJ IDEA执行maven打包,执行java -jar命令提示jar中没有主清单属性

    解决IntelliJ IDEA执行maven打包,执行java -jar命令提示jar中没有主清单属性

    IDEA执行 mvn clean package -DskipTest=true 命令或者借助工具的 Maven菜单 进行打包操作,然后执行 java -jar app.jar 命令后,提示jar中没有主清单属性 这个错误通常是由于生成的JAR文件缺少一个主清单属性引起的。在使用 java -jar 命令运行JAR文件时,JVM需要查找JAR文件中包含 Main-Class 属

    2024年02月05日
    浏览(15)
  • 【Java可执行命令】(八)JWS应用程序启动工具 javaws:深入解析Java Web Start应用程序的启动工具javaws ~

    【Java可执行命令】(八)JWS应用程序启动工具 javaws:深入解析Java Web Start应用程序的启动工具javaws ~

    Java Web Start(JWS) 是由Sun Microsystems(现为Oracle)开发的一种Java技术,旨在方便从Web浏览器启动和分发Java应用程序。 javaws 是 Java Web Start 工具的命令行版本。它使用 Java Network Launch Protocol (JNLP) 文件作为输入,并根据该文件描述的配置和资源来启动和运行相应的Java应用程序

    2024年02月16日
    浏览(8)
  • 【Java可执行命令】(十一)Java 密钥库和证书管理工具keytool:玩转密钥库和证书管理,深入解析keytool工具的应用与技巧~

    【Java可执行命令】(十一)Java 密钥库和证书管理工具keytool:玩转密钥库和证书管理,深入解析keytool工具的应用与技巧~

    Java的 keytool 命令是用于管理和操作Java密钥库( KeyStore )的工具。它的设计目的是为了方便Java开发人员生成、管理和操作数字证书,以及实现对保护资源进行安全访问的加密和身份验证。 🔍 一些相关概念? 密钥库(KeyStore):它是存储密钥和证书的容器,可以包含私钥、公

    2024年02月12日
    浏览(9)
  • npm包安装与管理:深入解析命令行工具的全方位操作指南,涵盖脚本执行与包发布流程

    npm包安装与管理:深入解析命令行工具的全方位操作指南,涵盖脚本执行与包发布流程

    npm,全称为Node Package Manager,是专为JavaScript生态系统设计的软件包管理系统,尤其与Node.js平台紧密关联。作为Node.js的默认包管理工具,npm为开发者提供了便捷的方式来安装、共享、分发和管理代码模块。 npm作为JavaScript世界不可或缺的基础设施,极大地促进了代码复用和协作

    2024年04月12日
    浏览(14)
  • 普通Java工程可执行JAR两种打包方式探讨

    普通Java工程可执行JAR两种打包方式探讨

    普通Java工程 docker-show 实现了定时打印docker应用信息,现在需要将其打包成可执行Jar部署到服务器端运行。 打包方式分为2种: 一体化可执行包 带外部依赖lib的可执行包 此项目使用了线程池定时打印docker应用名,端口信息 pom文件中引入 maven-assembly-plugin 插件,核心配置 pom文

    2024年04月10日
    浏览(16)
  • 【Java】java | 将可运行jar打包成exe可执行文件

    【Java】java | 将可运行jar打包成exe可执行文件

            1、javafx桌面程序,但又不想安装jre环境         2、需要将可执行jar打包成exe         3、使用工具exe4j 1、下载exe4j 2、安装 说明1: 在d盘建个exe4j的文件夹 说明2: 建个output文件jar,存放生成后的exe 3、运行 4、目录介绍 Welcome: 工具介绍;Open可以打开历史的

    2024年02月03日
    浏览(7)
  • IDEA——将Java项目打包成可执行的Jar包

    IDEA——将Java项目打包成可执行的Jar包

    在Java开发中,我们通常会将我们的项目打包成可执行的Jar包,以便于在其他环境中部署和运行。本文将介绍如何使用IDEA集成开发环境将Java项目打包成可执行的Jar包。 步骤一:配置项目的执行入口 在开始之前,确保你的Java项目中已经配置了一个执行入口类(通常是包含mai

    2024年02月16日
    浏览(15)
  • jar命令打包java应用和java打jar包的几种方式详解

    jar是标准的java打包命令,位于JAVA_HOME/bin/目录下面。主要功能是将多个文件打包成一个单独的jar文件。 创建jar文件 jar c[v0Mmfe] [manifest] [jarfile] [entrypoint] [-C dir] inputfiles [-Joption] 更新jar文件 jar u[v0Mmfe] [manifest] [jarfile] [entrypoint] [-C dir] inputfiles [-Joption] 解压jar文件 jar x[vf] [jarfile

    2024年02月17日
    浏览(11)
  • 通过exe4j将 java 项目(jar)打包成exe可执行文件(详细步骤)

    通过exe4j将 java 项目(jar)打包成exe可执行文件(详细步骤)

    通过exe4j将 java 项目(jar)打包成exe可执行文件 文章目录 文章目录 一、下载安装 二、使用步骤 下载链接: ej-technologies - Java APM, Java Profiler, Java Installer Builder  安装只需一直下一步即可。 1.输入注册码“L-g782dn2d-1f1yqxx1rv1sqd”。 2.如下图: 3.如下图: 4.如下图: 5.如下图:

    2024年02月16日
    浏览(17)
  • Android系统部署java环境并运行Java程序执行jar包

    Android系统部署java环境并运行Java程序执行jar包

    在Android系统中运行jar包可通过把jar转换为安卓系统可以执行的dex文件,从而运行java程序,但这种方法只不适用于复杂的框架,本篇讲述在Android设备中部署java环境并运行springboot项目。 为了运行更为复杂的java程序,可以在安卓设备中安装AidLux(国内软件)或Termux(国外软件),

    2023年04月22日
    浏览(11)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包