IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发工具 -> 修改jar包中的配置文件 -> 正文阅读

[开发工具]修改jar包中的配置文件

场景描述

项目已封板,却突然被告知要修改与某平台的交互参数。最简单的方式就是修改代码,并重写丄包。经过几番确认,这种非必须(ps:他们觉得可以直接修改jar包or war包里配置文件)的修改不允许修改master,被无情拒绝了。只见二十几个项目组都在修改配置文件。内心有句话不知当讲不当讲~~

难点分析

本次与一般的情况不同。项目使用maven管理依赖,并将代码按业务划分了几个module,并且部署时是jar包部署。本次需要修改的配置文件。(file.properties )和启动类不在同一个module下,即 file.properties 在项目部署jar( app.jar )里面的一个jar包( pack.jar )里面,被套了两层。
普通的一层jar可直接vim修改,见最终方案里的修改file.properties部分

几种尝试

方法一:vim修改

先尝试vi修改,不知是编码还是其他原因,四个环境中有两个环境为乱码,无法修改。
后尝试vim进行修改,进入app.jar后,无法直接编辑 pack.jar 。
故,失败!

方法二:使用win

将jar包下载至win解压一次得到 pack.jar,再使用压缩软件对 file.properties 进行编辑,然后替换原 pack.jar,得到新的app.jar包。
运行最新jar包时,报错显示 pack.jar 包被压缩过,无法运行该jar包。
故,失败!

方法三:先提取后替换

使用 jar xf 项目部署jar pack.jar 命令获取到pack.jar后,
再使用 vim pack.jar 对 file.properties 进行修改,
最后使用 jar uf 项目部署jar pack.jar 命令替换原来的pack.jar,
激动人心的时刻到了!好吧,还是启动失败,再次报错显示 pack.jar 包被压缩过,无法运行该jar包。
故,失败!

方法四:在linux解压后vim修改并重新打包

根据二、三的错误信息,决定解决这个隐藏的压缩操作。
选择在linux下直接解压app.jar后,再使用vim对pack.jar进行修改,编辑file.properties文件,最后重新打包。
这次成功了!!!!

最终方案

如上方法四中所述,以下为相关命令:

unzip app.jar						// linux 环境解压人app.jar
rm -rf app,jar						// 删除原app.jar
cd BOOT-INF/lib/					// 进入pack.jar所在目录
vim pack.jar						// 进入pack.jar
/file.properties  					// 回车两次后进入file.properties
									// 此处省略文本修改步骤,:d 就退出jar了
jar cvfm0 app.jar ./META-INF/MANIFEST.MF ./			// 该步骤很重要!!!

通过以上步骤就得到了最新的app.jar,运行成功了!!!

补充

解释一下最后重新打包的命令

jar cvfm0 app.jar ./META-INF/MANIFEST.MF ./	

cvf 重新打包
m0 不压缩
./META-INF/MANIFEST.MF 选择原来的manifest文件,这里面记载一些启动参数,这个东西是必不可少的。如果打包时没有指定,则会生成一个默认的,会无法启动!所以要指定为原来的manifest文件。

ps:linux只会基本部署项目的操作,有错误的地方还望海涵。
欢迎大家提供新的方法或思路,一起学习啦~~~
转载请标明出处哈

Over!

  开发工具 最新文章
Postman接口测试之Mock快速入门
ASCII码空格替换查表_最全ASCII码对照表0-2
如何使用 ssh 建立 socks 代理
Typora配合PicGo阿里云图床配置
SoapUI、Jmeter、Postman三种接口测试工具的
github用相对路径显示图片_GitHub 中 readm
Windows编译g2o及其g2o viewer
解决jupyter notebook无法连接/ jupyter连接
Git恢复到之前版本
VScode常用快捷键
上一篇文章           查看所有文章
加:2021-07-24 00:10:10  更:2021-07-24 00:10:33 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/20 13:30:34-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码