直接修改和替换Jar包中文件的几种方式
在我们日常打包部署 Jar 包的时候,时常会出现需要修改少量内容或替换某个文件的时候,重新打包完整 Jar 包并在网上传输费时费力,所以需要直接修改 Jar 包,这里就对直接修改 和替换 Jar 包中文件的几种方式做一下总结。
通用方法——解压后重新打包 Jar 包
这个通用方法,就是将 Jar 包进行解压,修改或替换文件后,重新打包成 Jar 包的方式。这个方法需要部署 JAVA jdk,需要用到其中的 jar 命令。
我们可以先看下 jar 命令的官方说明,0
参数是关键。
1 | 用法: jar {ctxui}[vfmn0PMe] [jar-file] [manifest-file] [entry-point] [-C dir] files ... |
所以流程就是这样的,首先解压 jar 包。
1 | # 解压 |
进入文件夹编辑或者替换需要更改的文件,然后重新进行打包,加了 0
参数表示只打包不压缩。
1 | # 压缩 |
不要漏了这个 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 包,切记!
所有文件
这个我暂时只知道通过上面说明的通用方法进行修改替换文件,如有小伙伴知道其他方法,希望可以告诉我,十分感谢。