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]
相关文章:
Java开发工具-Jar命令
Java开发工具-Jar 1、jar命令全平台使用 2、jar命令的作用 为类和资源创建存档,并从存档中操作或恢复单个类或资源 3、摘要 jar [OPTION …] [ [–release VERSION] [-C dir] files] … 4、jar命令描述 jar命令通常作为用于压缩与解压的工具,基于ZIP或Z…...

UE5通过蓝图节点控制材质参数
通过蓝图节点控制材质的参数 蓝图节点 在材质上设置标量值 和 在材质上设置向量参数值 Set Scalar Parameter Value on Materials Set Vector Parameter Value on Materials 这两个蓝图节点都可以在蓝图中,控制材质的参数值和向量值...

敖行客年终总结-AT Work 1.0发布
2024年就要过去了,看看敖行客这一年都干了些啥? 敖行客团队通过整整一年的努力,正式推出了AT Work 1.0订阅版,这也标志着AT Work即将正式和C端的小伙伴见面了。 AT Work 是什么? 长期以来,软件研发成本、…...

线程锁和协程锁的区别
转自:chatgpt 1.bthread_mutex_t bthread_mutex_t 是 brpc 框架提供的一种互斥锁,专门为 bthread(轻量级线程) 设计,具有以下特点: 适用于 bthread 调度模型: bthread_mutex_t 是为 brpc 中的…...

手机租赁平台开发助力智能设备租赁新模式
内容概要 手机租赁平台开发,简单说就是让你用得起高大上的智能设备,不管是最新款的手机、平板,还是那些炫酷的智能耳机,这个平台应有尽有。想要体验但又不希望花大钱?那你就找对地方了!通过灵活的租赁方案…...

掌握大数据处理利器:Flink 知识点全面总结【上】
1.Flink的特点 Apache Flink 是一个框架和分布式处理引擎,用于对无界和有界数据流进行状态计算。 Flink主要特点如下: 高吞吐和低延迟。每秒处理数百万个事件,毫秒级延迟。结果的准确性。Flink提供了事件时间(event--time)和处理时间(proces…...

人工智能知识分享第四天-线性回归
线性回归 线性回归介绍 线性回归概念 线性回归(Linear regression)是利用 回归方程(函数) 对 一个或多个自变量(特征值)和因变量(目标值)之间 关系进行建模的一种分析方式。 注意事项: 1 为什么叫线性模型?因为求解的w,都是w的零次幂&am…...
Appium 2.0:移动自动化测试的革新之旅
关注开源优测不迷路 大数据测试过程、策略及挑战 测试框架原理,构建成功的基石 在自动化测试工作之前,你应该知道的10条建议 在自动化测试中,重要的不是工具 在移动应用开发的领域中,Appium 作为一款强大的自动化测试工具…...

牛客网最新1129道 Java 面试题及答案整理
前言 面试,跳槽,每天都在发生,而对程序员来说"金三银四"更是面试和跳槽的高峰期,跳槽,更是很常见的,对于每个人来说,跳槽的意义也各不相同,可能是一个人更向往一个更大的…...
Swift Combine 学习(六):自定义 Publisher 和 Subscriber
Swift Combine 学习(一):Combine 初印象Swift Combine 学习(二):发布者 PublisherSwift Combine 学习(三):Subscription和 SubscriberSwift Combine 学习(四&…...
Vue-router知识点汇总
import Vue from vue import Router from vue-router Vue.use(Router) import Layout from /layout export const constantRoutes [{path: /forgetpsd,name: forgetPsd,// 命名路由 ,跳转<router-link :to"{ name: forgetPsdr, params: { userId: 123 }}&q…...

java AQS
什么是AQS AQS(AbstractQueuedSynchronizer,抽象队列同步器)是 Java 中并发控制的一种机制,位于 java.util.concurrent.locks 包下,它为构建锁、信号量等同步工具提供了一个框架。AQS 通过 队列 来管理多个线程之间的…...

L25.【LeetCode笔记】 三步问题的四种解法(含矩阵精彩解法!)
目录 1.题目 2.三种常规解法 方法1:递归做 编辑 方法2:改用循环做 初写的代码 提交结果 分析 修改后的代码 提交结果 for循环的其他写法 提交结果 方法3:循环数组 提交结果 3.方法4:矩阵 算法 代码实践 1.先计算矩阵n次方 2.后将矩阵n次方嵌入递推式中 提…...
sdut-C语言实验-合数分解
sdut-C语言实验-合数分解 分数 12 全屏浏览 切换布局 作者 马新娟 单位 山东理工大学 合数是指在大于1的整数中,除了1和本身外,还能被其他数整除的数。例如,4、6、8、9、10等都是合数。把一个合数分解成若干个质因数乘积的形式(即求质因…...

深入理解 pytest Fixture 方法及其应用
在 Python 自动化测试领域,pytest 是当之无愧的王者。提到 pytest,不得不说它的一大核心功能——Fixture。Fixture 的强大,让复杂的测试流程变得井井有条,让测试代码更加灵活和可复用。 那么,pytest 的 Fixture 究竟是…...

在Linux上获取MS(如Media Server)中的RTP流并录制为双轨PCM格式的WAV文件
在Linux上获取MS(如Media Server)中的RTP流并录制为双轨PCM格式的WAV文件 一、RTP流与WAV文件格式二、实现步骤三、伪代码示例四、C语言示例代码五、关键点说明六、总结在Linux操作系统上,从媒体服务器(如Media Server,简称MS)获取RTP(Real-time Transport Protocol)流…...
Midjourney技术浅析(八):交互与反馈
Midjourney 的用户交互与反馈通过用户输入(User Input)和用户反馈(User Feedback)机制,不断优化和改进图像生成的质量和用户满意度。 一、用户交互与反馈模块概述 用户交互与反馈模块的主要功能包括: 1.…...

【Spring MVC 核心机制】核心组件和工作流程解析
在 Web 应用开发中,处理用户请求的逻辑常常会涉及到路径匹配、请求分发、视图渲染等多个环节。Spring MVC 作为一款强大的 Web 框架,将这些复杂的操作高度抽象化,通过组件协作简化了开发者的工作。 无论是处理表单请求、生成动态页面&#x…...

回归问题的等量分层
目录 一、说明 二、什么是分层抽样? 三、那么回归又如何呢? 四、回归分层(Stratification on Regression) 一、说明 在同一个数据集中,我们可以看成是一个抽样体。然而,我们如果将这个抽样体分成两份&#…...

Unity-Mirror网络框架-从入门到精通之Basic示例
文章目录 前言Basic示例场景元素预制体元素代码逻辑BasicNetManagerPlayer逻辑SyncVars属性Server逻辑Client逻辑 PlayerUI逻辑 最后 前言 在现代游戏开发中,网络功能日益成为提升游戏体验的关键组成部分。Mirror是一个用于Unity的开源网络框架,专为多人…...

【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型
摘要 拍照搜题系统采用“三层管道(多模态 OCR → 语义检索 → 答案渲染)、两级检索(倒排 BM25 向量 HNSW)并以大语言模型兜底”的整体框架: 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后,分别用…...
HTML 语义化
目录 HTML 语义化HTML5 新特性HTML 语义化的好处语义化标签的使用场景最佳实践 HTML 语义化 HTML5 新特性 标准答案: 语义化标签: <header>:页头<nav>:导航<main>:主要内容<article>&#x…...

【WiFi帧结构】
文章目录 帧结构MAC头部管理帧 帧结构 Wi-Fi的帧分为三部分组成:MAC头部frame bodyFCS,其中MAC是固定格式的,frame body是可变长度。 MAC头部有frame control,duration,address1,address2,addre…...
从零实现富文本编辑器#5-编辑器选区模型的状态结构表达
先前我们总结了浏览器选区模型的交互策略,并且实现了基本的选区操作,还调研了自绘选区的实现。那么相对的,我们还需要设计编辑器的选区表达,也可以称为模型选区。编辑器中应用变更时的操作范围,就是以模型选区为基准来…...
QMC5883L的驱动
简介 本篇文章的代码已经上传到了github上面,开源代码 作为一个电子罗盘模块,我们可以通过I2C从中获取偏航角yaw,相对于六轴陀螺仪的yaw,qmc5883l几乎不会零飘并且成本较低。 参考资料 QMC5883L磁场传感器驱动 QMC5883L磁力计…...
Java如何权衡是使用无序的数组还是有序的数组
在 Java 中,选择有序数组还是无序数组取决于具体场景的性能需求与操作特点。以下是关键权衡因素及决策指南: ⚖️ 核心权衡维度 维度有序数组无序数组查询性能二分查找 O(log n) ✅线性扫描 O(n) ❌插入/删除需移位维护顺序 O(n) ❌直接操作尾部 O(1) ✅内存开销与无序数组相…...
1688商品列表API与其他数据源的对接思路
将1688商品列表API与其他数据源对接时,需结合业务场景设计数据流转链路,重点关注数据格式兼容性、接口调用频率控制及数据一致性维护。以下是具体对接思路及关键技术点: 一、核心对接场景与目标 商品数据同步 场景:将1688商品信息…...

376. Wiggle Subsequence
376. Wiggle Subsequence 代码 class Solution { public:int wiggleMaxLength(vector<int>& nums) {int n nums.size();int res 1;int prediff 0;int curdiff 0;for(int i 0;i < n-1;i){curdiff nums[i1] - nums[i];if( (prediff > 0 && curdif…...

《用户共鸣指数(E)驱动品牌大模型种草:如何抢占大模型搜索结果情感高地》
在注意力分散、内容高度同质化的时代,情感连接已成为品牌破圈的关键通道。我们在服务大量品牌客户的过程中发现,消费者对内容的“有感”程度,正日益成为影响品牌传播效率与转化率的核心变量。在生成式AI驱动的内容生成与推荐环境中࿰…...

【项目实战】通过多模态+LangGraph实现PPT生成助手
PPT自动生成系统 基于LangGraph的PPT自动生成系统,可以将Markdown文档自动转换为PPT演示文稿。 功能特点 Markdown解析:自动解析Markdown文档结构PPT模板分析:分析PPT模板的布局和风格智能布局决策:匹配内容与合适的PPT布局自动…...