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

通用方法 —— 解压后重新打包 Jar 包

这个通用方法,就是将 Jar 包进行解压,修改或替换文件后,重新打包成 Jar 包的方式。这个方法需要部署 JAVA jdk,需要用到其中的 jar 命令。

我们可以先看下 jar 命令的官方说明,0 参数是关键。

用法: 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 包,切记!

 

 

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
颜文字
Emoji
小恐龙
花花
上一篇
下一篇