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

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.lryc.cn/news/513118.html

相关文章:

  • UE5通过蓝图节点控制材质参数
  • 敖行客年终总结-AT Work 1.0发布
  • 线程锁和协程锁的区别
  • 手机租赁平台开发助力智能设备租赁新模式
  • 掌握大数据处理利器:Flink 知识点全面总结【上】
  • 人工智能知识分享第四天-线性回归
  • Appium 2.0:移动自动化测试的革新之旅
  • 牛客网最新1129道 Java 面试题及答案整理
  • Swift Combine 学习(六):自定义 Publisher 和 Subscriber
  • Vue-router知识点汇总
  • java AQS
  • L25.【LeetCode笔记】 三步问题的四种解法(含矩阵精彩解法!)
  • sdut-C语言实验-合数分解
  • 深入理解 pytest Fixture 方法及其应用
  • 在Linux上获取MS(如Media Server)中的RTP流并录制为双轨PCM格式的WAV文件
  • Midjourney技术浅析(八):交互与反馈
  • 【Spring MVC 核心机制】核心组件和工作流程解析
  • 回归问题的等量分层
  • Unity-Mirror网络框架-从入门到精通之Basic示例
  • CSS 图片廊:网页设计的艺术与技巧
  • AI 发展的第一驱动力:人才引领变革
  • [创业之路-229]:《华为闭环战略管理》-5-平衡记分卡与战略地图
  • 用uniapp写一个播放视频首页页面代码
  • 【视觉SLAM:八、后端Ⅰ】
  • PaddleOCROCR关键信息抽取训练过程
  • 用Python操作字节流中的Excel文档
  • python 桶排序(Bucket Sort)
  • Elasticsearch:探索 Elastic 向量数据库的深度应用
  • 【每日学点鸿蒙知识】属性变量key、waterflow卡顿问题、包无法上传、Video控件播放视频、Vue类似语法
  • 小程序中引入echarts(保姆级教程)