替换jar包中的yml,class等文件的实现方式

 更新时间:2025年12月31日 08:32:36   作者:工欲善其事&必先利其器  
文章介绍了如何在不回退版本的情况下,替换jar包中的特定文件来修复线上bug,具体步骤包括:准备文件、下载jar包、查看文件路径、解压文件、替换文件、重新打包文件、验证替换、重新上传jar包并测试

1.使用场景

由于线上项目中突然爆出一个bug问题,影响到用户使用,但是 线上的jar包版本,已经是很久的了,没有对应的分支版本,或者再这个分支版本上后来又提交了一些新功能。

不知道该回退到哪次提交记录才能保证和线上环境的版本内容完全一致。

在这种情况我们不能再当前最新的版本里进行修复问题,然后进行打包,因为当前最新的版本里会有很多不确定的问题。所以最好的办法就是线上的问题出在哪里,只对这个文件进行修改、替换、重启,这种修改影响最小。

下面介绍如何替换jar中的文件,可以替换单个或多个,下面以自己线上的实际操作进行介绍。

2.先准备好待替换的文件

将本地修改后的application-zhyd-prod.yml配置文件,准备好。

3.下载服务器上的jar包

从服务器上把jar包文件下载下来,放到本地单独的一个文件夹内,查看要替换的application-zhyd-prod.yml文件在zhyd-platform-customer.jar包中所在的具体路径,命令如下:

jar -tvf zhyd-platform-customer.jar | grep application-zhyd-prod.yml
9975 Fri Jun 02 16:04:00 CST 2023 BOOT-INF/classes/application-zhyd-prod.yml

-tvf:查看jar包的内容,并不解压

4.解压出来指定的文件

jar -xvf zhyd-platform-customer.jar  BOOT-INF/classes/application-zhyd-prod.yml
BOOT-INF/classes/application-zhyd-prod.yml

-xvf:解压出来jar包的指定的文件

然后将第一步准备好的.yml文件,替换掉这里的yml文件。

5.将文件打入jar包

jar -uvf zhyd-platform-customer.jar  BOOT-INF/classes/application-zhyd-prod.yml   #单个文件
BOOT-INF/classes/application-zhyd-prod.yml

#如果BOOT-INF/classes/目录下有多个文件需要打入jar包,可以用下面的方法
jar -uvf zhyd-platform-customer.jar  BOOT-INF/classes/

-uvf:将指定路径的文件打入指定的jar内部,若有就覆盖替换。

6.查看是否替换成功

可以再次对jar进行解压出指定的文件,然后查看是否已经是最新的了。

7.将Jar重新上传至服务器

将jar包上传至服务端后,需要先启一个单独接口测试一下是否正常,然后再替换生产上的版本。

java -jar xxxxx.jar --server.port=端口号

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 使用java采集京东商城区划数据示例

    使用java采集京东商城区划数据示例

    这篇文章主要介绍了java采集京东的全国区划数据示例,保存成json形式,如想转换到数据库只需反序列化为对象保存到数据库即可
    2014-03-03
  • java处理字节的常用工具类

    java处理字节的常用工具类

    这篇文章主要为大家详细介绍了java处理字节的常用工具类,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-03-03
  • Java 并发编程创建线程的四种方式示例详解

    Java 并发编程创建线程的四种方式示例详解

    本文对比Java创建线程的四种方式:继承Thread类(单继承限制)、实现Runnable接口(灵活推荐)、实现Callable接口(支持返回值)、使用线程池(最佳实践,资源管理高效),推荐优先使用线程池提升系统稳定性与资源利用率,感兴趣的朋友一起看看吧
    2025-09-09
  • Java实现推箱子游戏

    Java实现推箱子游戏

    这篇文章主要为大家详细介绍了Java实现推箱子游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-05-05
  • Java数据库连接_jdbc-odbc桥连接方式(详解)

    Java数据库连接_jdbc-odbc桥连接方式(详解)

    下面小编就为大家带来一篇Java数据库连接_jdbc-odbc桥连接方式(详解)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-08-08
  • springboot vue完成发送接口请求显示响应头信息

    springboot vue完成发送接口请求显示响应头信息

    这篇文章主要为大家介绍了springboot+vue完成发送接口请求显示响应头信息,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-05-05
  • Java整型数与网络字节序byte[]数组转换关系详解

    Java整型数与网络字节序byte[]数组转换关系详解

    这篇文章主要介绍了Java整型数与网络字节序byte[]数组转换关系,结合实例形式归纳整理了java整型数和网络字节序的byte[]之间转换的各种情况,需要的朋友可以参考下
    2017-08-08
  • idea打开运行配置java web项目的全过程

    idea打开运行配置java web项目的全过程

    这篇文章主要给大家介绍了关于idea打开运行配置java web项目的相关资料,有些时候我们用IDEA跑之前用eclipse中运行的项目的时候,总是不止所措,要不就是只展示html,要不就是不能部署成功,需要的朋友可以参考下
    2023-08-08
  • Java编程基本概念

    Java编程基本概念

    本文主要介绍了Java编程的基本概念,具有很好的参考价值。下面跟着小编一起来看下吧
    2017-03-03
  • Java实现替换Word中文本和图片功能

    Java实现替换Word中文本和图片功能

    Word中的替换功能以查找指定文本然后替换为新的文本,可单个替换或全部替换。本文将用Java语言实现Word中的文本、图片替换功能,需要的可以参考一下
    2022-06-06

最新评论