直接修改和替换 Jar 包中文件的几种方式

用法: jar {ctxui}[vfmn0PMe] [jar-file] [manifest-file] [entry-point] [-C dir] files …
选项:
-c 创建新档案
-t 列出档案目录
-x 从档案中提取指定的 (或所有) 文件
-u 更新现有档案
-v 在标准输出中生成详细输出
-f 指定档案文件名
-m 包含指定清单文件中的清单信息
-n 创建新档案后执行 Pack200 规范化
-e 为捆绑到可执行 jar 文件的独立应用程序
指定应用程序入口点
-0 仅存储; 不使用任何 ZIP 压缩
-P 保留文件名中的前导 ‘/’ (绝对路径) 和 “…” (父目录) 组件
-M 不创建条目的清单文件
-i 为指定的 jar 文件生成索引信息
-C 更改为指定的目录并包含以下文件
如果任何文件为目录, 则对其进行递归处理。
清单文件名, 档案文件名和入口点名称的指定顺序
与 ‘m’, ‘f’ 和 ‘e’ 标记的指定顺序相同。

示例 1: 将两个类文件归档到一个名为 classes.jar 的档案中:
jar cvf classes.jar Foo.class Bar.class
示例 2: 使用现有的清单文件 ‘mymanifest’ 并
将 foo/ 目录中的所有文件归档到 ‘classes.jar’ 中:
jar cvfm classes.jar mymanifest -C foo/ .

所以流程就是这样的,首先解压 jar 包。

\# 解压  
jar -xvf test.jar  

进入文件夹编辑或者替换需要更改的文件,然后重新进行打包,加了 0 参数表示只打包不压缩。


\# 压缩  
jar -cvf0m test.jar ./META-INF/MANIFEST.MF .  

不要漏了这个 MANIFET.MF 文件,,这个文件里面记录了该 JAR 包的版本、创建人和类搜索路径等信息。如果一个 JAR 文件被当作可执行文件,则其中的 MANIFEST 文件需要指出该程序的主类文件,漏掉了则不能正常执行。

Windows 方式

在 Windows 上因为有许多完善好用的 GUI 应用,编辑起来就简单很多。Jar 包通常可以通过安装的压缩软件直接打开,所以至少要安装一个压缩软件,我想基本上每个人都会有的。

仅文本文件

对于文本文件来说,一般可以直接在 Jar 包里打开,修改保存后,压缩软件会提醒说文件已经修改,是否更新到 Jar 包中,点确定即可。

在这里插入图片描述

所有文件

所有文件,都可以通过将文件拖进 Jar 包的方式,添加或替换内容。需要注意的是,压缩方式需要选择存储 / 不压缩,或是其他类似的表达。当然也可以通过上面的通用方法解决。

在这里插入图片描述

Linux 方式

我指的 Linux 方式,基本就是指命令行的方式,不包含桌面操作,那个我不是很了解,或许会和 Windows 上的操作比较接近。

仅文本文件

首先需要系统里面安装 vim 和 zip 两个包,如果是 Ubuntu,可以运行 sudo apt install vim zip -y 安装。

然后你可能已经想到了,那就是通过 vim 工具打开 Jar 包,将会显示 Jar 包中的所有文件夹和文件绝对路径,每行显示一个。

在这里插入图片描述

通过将光标移动到需要修改的文件上,回车进入文件,像编辑普通文件一样进行修改,修改完成后,:wq 退出返回到文件列表。

接下来可以选择继续编辑其他文件或退出 Jar 包。退出 Jar 包时,请一定要通过:q 退出,这个很重要,如果你像上面保存文件一样加了 w 参数,这个 Jar 包就废了,它将会变成保存了文件列表的一个文本文件。所以请千万通过:q 参数退出 Jar 包,切记!

所有文件

这个我暂时只知道通过上面说明的通用方法进行修改替换文件,如有小伙伴知道其他方法,希望可以告诉我,十分感谢。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值