当前位置: 首页 > article >正文

Java开发工具-Jar命令

Java开发工具-Jar

1、jar命令全平台使用
2、jar命令的作用
为类和资源创建存档,并从存档中操作或恢复单个类或资源
3、摘要
jar [OPTION …] [ [–release VERSION] [-C dir] files] …
4、jar命令描述
jar命令通常作为用于压缩与解压的工具,基于ZIP或ZLIB格式, 最初jar命令是为打包applets(java小程序, jdk11之后就不在支持)或应用程序设计的,但是,从JDK9开始,用户可以使用jar命令打包模块化的jar。对于传输和部署,将模块打包为模块化jar通常更方便。jar命令的语法类似于tar命令的语法,它有几种主要的操作模式,由强制操作参数之一定义。其他参数要么是修改操作行为的选项,要么是执行操作所需的选项。当应用程序的模块或组件(文件,图像和声音)压缩到一个包中时,它们可以通过浏览器使用http协议直接下载,而不需要对每个模块分别下载。这极大的提高了下载效率,jar命令还可以压缩文件,这进一步缩短了下载时间。jar命令还支持对文件中的单个条目进行签名,以便对它们的来源进行身份验证。无论是否压缩,JAR文件都可以用作类路径入口。当您在给定目录的根目录或**.jar**包文件的根目录中包含模块描述符module-info.class时,归档文件就变成了模块化JAR。
操作修改符仅在创建和更新模式下有效,仅在创建或更新模块化jar或更新已存在的非模块化jar时有效。
–module-version
–hash-modules
–module-path
5、主要的操作模式
当使用jar命令时,必须指定要执行的操作。你可以通过包含本节中描述的适当操作参数来指定jar命令的操作模式。你可以将操作参数与其他单字母选项混合使用。通常,operation参数是命令行中指定的第一个参数。操作选项如下:

-c or --create

创建jar包

-i FILE or --generate-index=FILE

给生成的jar文件生成索引值,这个选项已经被注释掉了,未来的某个版本可能就会被去移除。

-t or --list

显示jar包中的文件列表

-u or --update

更新已存在的jar

-x or --extract

从jar中提取指定命名文件或者全部文件

-d or --describe-module

打印模块描述符或者自动化模块名称

6、自定义操作修饰符
你可以使用以下选项自定义jar命令中包含的任何操作模式的操作。

-C DIR

更改指定的目录,并包含命令行末尾指定的文件。
jar [OPTION …] [ [–release VERSION] [-C dir] files]

-f FILE or --file=FILE

指定jar文件的名称

–release VERSION

创建一个多版本JAR文件。将选项后指定的所有文件放入JAR文件的一个名为META-INF/versions/VERSION/的版本化目录中,其中VERSION必须是一个值大于等于9的正整数。
在运行时,如果JAR中存在一个以上版本的类,JDK将使用它找到的第一个版本,首先在版本号与JDK的主版本号匹配的目录树中进行搜索。然后,它将查找版本号依次较低的目录,最后查找JAR的根目录。

-v or --verbose

打印详细信息

7、仅在“创建”和“更新”模式下有效的操作修改符
你可以使用以下选项自定义创建和更新主操作模式的动作:

-e CLASSNAME or --main-class=CLASSNAME

指定绑定到模块化或可执行模块化JAR文件中的独立应用程序的应用程序入口点

-m FILE or --manifest=FILE

包含来自给定清单文件的清单信息。

-M or --no-manifest

不为条目创建清单文件。

–module-version=VERSION

在创建或更新模块化JAR文件或更新非模块化JAR文件时,指定模块版本。

–hash-modules=PATTERN

计算并记录与给定模式匹配的模块的散列,这些模块直接或间接依赖于正在创建的模块化JAR文件或正在更新的非模块化JAR文件。

-p or --module-path

指定用于生成哈希的模块依赖的位置。

@file

从文本文件中读取jar选项和文件名,就好像它们是在命令行中提供的一样

8、仅在“创建”、“更新”和“生成索引”模式下有效的操作修饰符
您可以使用以下选项自定义create (-c或——create)、update (-u或——update)和generate-index (-i或——generate-index=FILE)主要操作模式的操作:

-0 or --no-compress

存储不使用ZIP压缩。

–date=TIMESTAMP

ISO-8601中的时间戳扩展了带有可选时区格式的偏移日期时间,用于条目的时间戳,例如:“2022 - 02-12T12:30:00凌晨”。

9、其他操作符选项
以下选项由jar命令识别,不用于操作模式:

-h or --help[:compat]

显示jar命令的命令行帮助或可选的兼容性帮助。

–help-extra

显示额外选项的帮助

–version

打印程序的版本

10、使用jar命令的例子

jar --create --file classes.jar Foo.class Bar.class

创建一个classes.jar文件,其中包含两个类文件Foo.class和Bar.class。

jar --create --date=“2021-01-06T14:36:00+02:00” --file=classes.jar Foo.class Bar.class

创建一个classes.jar文件,其中包含两个类文件Foo.class和Bar.class并设置最后修改时间

jar --create --file classes.jar --manifest mymanifest -C foo/

通过使用包含foo/目录下所有文件的现有清单mymanifest,创建一个classes.jar包文件。

jar --create --file foo.jar --main-class com.foo.Main --module-version 1.0 -C foo/classes resources

创建一个模块化JAR文件foo.jar,其中模块描述符位于classes/module-info.class中。

jar --update --file foo.jar --main-class com.foo.Main --module-version 1.0 -C foo/module-info.class

将现有的非模块化JAR foo.jar更新为模块化JAR文件。

更多详情请参阅[https://docs.oracle.com/en/java/javase/23/docs/specs/man/jar.html]


http://www.kler.cn/a/464165.html

相关文章:

  • AWS 申请证书、配置load balancer、配置域名
  • 【C#深度学习之路】如何使用C#实现Yolo5/8/11全尺寸模型的训练和推理
  • git 创建tag, 并推送到远程仓库,启动actions构建release自动发布
  • pandas-栗子
  • RocketMQ面试题:进阶部分
  • HTML——73.button按钮
  • 面试经典问题 —— 链表之返回倒数第k个节点(经典的双指针问题)
  • RK3568适配美格(MEIG-SLM3XX)4G模块
  • JavaWeb开发(五)Servlet-ServletContext
  • 大数据-266 实时数仓 - Canal 对接 Kafka 客户端测试
  • 数字图像总复习
  • ubuntu切换到root用户
  • 【C++动态规划】2088. 统计农场中肥沃金字塔的数目|2104
  • C++11右值与列表初始化
  • Redis数据库主要数据结构类型
  • 【HarmonyOS之旅】ArkTS语法(四) -> 使用限制与扩展
  • 使用爬虫技术获取网页中的半结构化数据
  • 算法-判断一个数是不是3的次幂
  • 解决cookie跳转页面失效等问题
  • 大屏深色系 UI 设计:点亮科技与艺术的融合之光
  • 微记录-Linux字符设备的write函数如何避免文件系统重复调用?
  • 级联配准learning
  • 详解广义表长度与深度计算方法
  • 【初识vue以及简单指令】
  • 本地调试自定义Maven Plugin步骤
  • 力学笃行(示例1)QGraphicsView显示相机图像