像操作tar文件一样操作jar文件,让很多事情变得简单

news/2024/9/22 10:02:47/文章来源:https://www.cnblogs.com/o-O-oO/p/18392356

原创 1024夜谭

jar文件即Java归档文件,也称为jar包,是Java应用软件或库,通常聚合了大量的Java类文件、相关的元数据和资源文件。通常由构建工具产生,可以使用IDE、反编译工具或者Java诊断工具如Arthas等查看内容。

如果你对tar命令使用得心应手,那么你将发现jar操作与tar操作有许多相似之处。通过这些操作,可以让一些与jar相关的事情变得简单,从而提高工作效率。如:查看、修改jar文件中的配置文件,或者删除有问题的资源。

查看jar文件中的内容

和使用tar命令查看归档文件内容一样,jar命令也有“tf”选项,可以查看jar包中的内容。例如,查看jar包中有哪些配置文件:

~$ jar tf app.jar |grep ^config
config/
config/application-dev.yml
config/application.yml

“^config”匹配以config开头的内容,这样可以列出jar包中config目录的文件。

提取jar文件中的内容

前面已经列出jar包中的配置文件,如果想查看配置文件中的具体内容,则需要从jar包中提取该配置文件到文件系统,然后就可以查看或者编辑文件内容。和tar命令一样,使用“xf”选项。例如,提取config/application.yml文件:

~$ jar xf app.jar config/application.yml
~$ ls config
application.yml

提取文件需要使用该文件在jar包中的完整路径。提取后的文件,将根据jar包中的文件路径,放置在当前目录下,对于路径中不存在的目录会自动创建。

更新jar文件中的内容

如果修改了config/application.yml文件的内容,需要将修改后的文件更新到jar包中。更新文件也是使用“uf”选项,如以下命令:

~$ jar uf app.jar config/application.yml

操作技巧:开启命令行vi选项,然后在命令行按Esc键,随后输入“/xf”或者“/jar xf”后回车,可以快速找到之前执行过的提取config/application.yml文件的命令,然后按w键,光标跳到“x”的位置,按r键进入编辑模式(替换),按u键将输入“u”替换“x”,即完成本例中的命令输入,按回车执行即可。效果如下图,详细了解可看文末的相关阅读:

删除jar文件中的内容

这一点与tar操作不一样。tar命令可以使用“--delete”选项,从tar文件中删除一个或多个文件。jar命令未提供从jar包中删除文件的选项,但可以通过已有选项实现该操作。

为了删除jar包中的文件,需要首先将jar包中的所有文件进行提取,随后将这些文件从文件系统中移除,再重新生成新的jar包。

例如,在处理log4j漏洞时,漏洞扫描工具检测到应用程序jar包中有log4j-api等log4j相关的jar包,但应用实际未使用log4j,是通过日志框架间接引入的。可以通过执行以下命令,生成不包含log4j相关jar包的应用程序新jar包:

~$ cp app.jar app.jar.bak
~$ jar xf app.jar
~$ rm app.jar BOOT-INF/lib/*log4j*
~$ jar cfm0 app.jar META-INF/MANIFEST.MF BOOT-INF/ org/

操作之前先备份现有的jar包!这是一个很重要的习惯,可以防止意外造成数据丢失。

依赖包在应用jar包中位于BOOT-INF/lib目录下,提取后的文件位于当前目录的BOOT-INF/lib中,将需要删除的文件从该目录移除。

jar命令的“cf”选项和tar命令的“cf”选项作用一样;“m”选项表示更新清单文件META-INF/MANIFEST.MF,这个文件是从jar包中提取出来的,不需要额外修改;“0”表示创建jar文件时不使用zip压缩。

总的来说,通过借鉴tar命令的使用方式,我们可以更轻松地处理jar文件。这些操作简化了与jar文件相关的任务,提高了工作效率。掌握一些常用的命令和工具,可以使我们的工作流程更加顺畅,让我们有更多的时间去专注于更重要的事情。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/790934.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Spearman相关性分析 —— 入门案例

简介 Spearman相关系数,也称为Spearman等级相关系数,是一种非参数的统计度量,用于评估两个变量之间的相关性,即它们是否以某种一致的方式一起变化。与皮尔逊相关系数不同,Spearman相关系数不假设数据是正态分布的,也不要求变量是线性关系。Spearman的检验 在统计学中,p值…

.NET 8.0 前后分离快速开发框架

前言 大家好,推荐一个.NET 8.0 为核心,结合前端 Vue 框架,实现了前后端完全分离的设计理念。它不仅提供了强大的基础功能支持,如权限管理、代码生成器等,还通过采用主流技术和最佳实践,显著降低了开发难度,加快了项目交付速度。 如果你需要一个高效的开发解决方案,本框…

一维卡尺边缘对

一、代码部分* 一维卡尺 边缘对read_image (Image, printer_chip/printer_chip_01)*打开助手操作生成代码* Measure 02: Code generated by Measure 02 * Measure 02: Prepare measurement AmplitudeThreshold := 40 RoiWidthLen2 := 5 set_system (int_zooming, true) * Measu…

mongodb 集合的导入导出

在新版本的mongodb中已经不默认安装这些工具,需要到mongodb网站单独下载 https://www.mongodb.com/try/download/database-tools 下载完成后使用scp D:\mongodb-tools.tgz root@8.143.49.192:/home/mongodb_tools.tgz命令将文件复制到linux服务器用 tar -zxvf demo.tar.gz -C …

nginx 版本升级 转载

Nginx 的版本最开始使用的是 Nginx-1.18.0 , 由于服务升级,需要将 Nginx 的版本升级到 Nginx-1.19.7 ,要求 Nginx 不能中断提供服务。 为了应对上述的需求,提供两种解决方案: 方案1: make upgrade 完成升级方案2: 服务信号 完成升级nginx 版本升级环境说明当前是 CentOS…

如何从 AWS CodeCommit 迁移到极狐GitLab?

本文将分享如何从 AWS CodeCommit 服务无缝迁移到极狐GitLab,并且使用极狐GitLab 的一体化 DevSecOps 平台功能来进行软件研发。2024 年 7 月 25 日,AWS 官方发布了一则重要通知:旗下的代码托管服务 AWS CodeCommit 服务将不再接受新用户的注册,老用户可以继续使用,但是该…

【验证码逆向专栏】某某邮政滑块逆向分析

声明 本文章中所有内容仅供学习交流使用,不用于其他任何目的,不提供完整代码,抓包内容、敏感网址、数据接口等均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关! 本文章未经许可禁止转载,禁止任何修改后二次传播,擅自使用本文讲解的技术…

PyTorch从入门到放弃之张量模块

目录张量的数据类型torch.rand()函数torch.randn()函数torch.normal()函数torch.linspace()函数torch.manual_seed()函数torch.ones()、torch.zeros()、torch.eye()张量的基本操作增加和删除维度交换维度拼接和分割堆叠和分解索引和切片基本数学运算元素求和按索引求和元素乘积…

Windows + macOS n合一 安装U盘制作

还不会制作MacOS多合一+Windows系统U盘?分享一个制作macOS和Windows双系统U盘的方法,macOS系统以macOS10.15.7和11.5.2为例(12和13制作方法一样,只是制作的命令不一样,Window PE系统以微PE为例子,准备工作如下: 1、第一步准备好一个32GU盘; 2、准备一台Windows电脑; …

推荐分享一个好用的api测试工具

Packer-Fuzzer 随着WEB前端打包工具的流行,在日常渗透测试、安全服务中是否遇到越来越多以Webpack打包器为代表的网站?这类打包器会将整站的API和API参数打包在一起供Web集中调用,这也便于我们快速发现网站的功能和API清单,但往往这些打包器所生成的JS文件数量异常之多并且…