替换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=端口号

总结

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

相关文章

  • SpringBoot 缓存 Caffeine使用解析

    SpringBoot 缓存 Caffeine使用解析

    这篇文章主要介绍了SpringBoot 缓存 Caffeine使用解析,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-09-09
  • Java实现EasyCaptcha图形验证码的具体使用

    Java实现EasyCaptcha图形验证码的具体使用

    Java图形验证码,支持gif、中文、算术等类型,可用于Java Web、JavaSE等项目,下面就跟随小编一起来了解一下
    2021-08-08
  • java线程池工作队列饱和策略代码示例

    java线程池工作队列饱和策略代码示例

    这篇文章主要介绍了java线程池工作队列饱和策略代码示例,涉及线程池的简单介绍,工作队列饱和策略的分析及代码示例,具有一定参考价值,需要的朋友可以了解下。
    2017-11-11
  • Java设计模式之java状态模式详解

    Java设计模式之java状态模式详解

    这篇文章主要介绍了Java设计模式之状态模式定义与用法,结合具体实例形式详细分析了Java状态模式的概念、原理、定义及相关操作技巧,需要的朋友可以参考下
    2021-09-09
  • 使用IDEA进行安卓开发的详细图文教程

    使用IDEA进行安卓开发的详细图文教程

    安卓开发本身就是Java开发的一个分支,我们要确保计算机已经安装好JDK并做好了相关的配置,下面这篇文章主要给大家介绍了关于如何使用IDEA进行安卓开发的详细图文教程,需要的朋友可以参考下
    2023-04-04
  • Scheduler定时任务调度详解

    Scheduler定时任务调度详解

    文章介绍了SysJobServiceImpl类中定时任务调度的相关方法,包括清除、检查存在性、创建、暂停、恢复、删除任务,以及触发任务,并提到了JobKey、CronUtils、ScheduleUtils、SpringUtils等工具类的使用,适用于Spring管理环境
    2025-01-01
  • Java单链表的实现代码

    Java单链表的实现代码

    这篇文章主要介绍了Java单链表的实现代码的相关资料,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2016-07-07
  • Spring中事务失效的8种常见使用场景避坑指南

    Spring中事务失效的8种常见使用场景避坑指南

    事务失效往往不会抛出异常,而是静默发生,等到业务出现问题时才被发现,造成严重的数据不一致,本文将分析8种导致Spring事务失效的使用问题并提供相应的解决方案,希望对大家有所帮助
    2025-05-05
  • springboot 2.x整合mybatis实现增删查和批量处理方式

    springboot 2.x整合mybatis实现增删查和批量处理方式

    这篇文章主要介绍了springboot 2.x整合mybatis实现增删查和批量处理方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-09-09
  • Java实现自动压缩文件并加密的方法示例

    Java实现自动压缩文件并加密的方法示例

    这篇文章主要介绍了Java实现自动压缩文件并加密的方法,涉及java针对文件进行zip压缩并加密的相关操作技巧,需要的朋友可以参考下
    2018-01-01

最新评论