Java替换jar包中class文件的完整步骤记录
在更新java应用版本的运维工作中,由于一些原因,开发没办法给到完整的jar包,这个时候,就可以只将修改后的某个java类的class文件替换掉原来iar包中的class文件,重新启动服务即可:
1、将jar包和将要替换的class文件放到同一个目录下;
2、查找jar包中xxxdemo.class文件所在的具体路径
jar -tvf xxx.jar | grep xxx.class
3、将xxx.jar中指定的xxx.class解压出来
jar -xvf xxx.jar xxx/xxx/xxx/xxx/xxx/xxx.class(路径为第2步的路径结果)
4、将新的xxx.class文件放到第3步的路径下(替换前备份原文件)
这里更换名字的方法模拟这一步,实际生产环境操作按需要放进新的文件
5、重新打包jar
jar -uvf xxx.jar xxx/xxx/xxx/xxx/xxx/xxx.class(路径为第2步的路径结果)
查看jar包里的文件已经是新文件(如果是一样名字的会被覆盖处理):
6、重启使用该jar包应用(如有需要)。
7、替换jar包中的jar文件
前2个查找查找步骤同上,最后一步略有不同。如:
jar -uvf0 abc.jar boot-inf/lib/a.jar ##使用的是-uvf0而是不是-uvf
附:jar包如何使用命令替换class文件
话不多说,直接上命令:
# 1.检索文件 jar -tvf test-0.0.1-snapshot.jar | grep test.class # 2.取出文件 jar -xvf test-0.0.1-snapshot.jar boot-inf/classes/com/test/test.class #3.替换文件 mv test.class boot-inf/classes/com/test/test.class #4.打入jar包 jar -uvf test-0.0.1-snapshot.jar boot-inf/classes/com/test/test.class #5.删除冗余文件 rm -r boot-inf
脚本文件:
updateclass.sh
#!/bin/bash # 动态部署class脚本 classname=`ls|grep .class$` jarname=`ls|grep .jar$` if [ -z $classname ] then echo "no class file found." exit 1 fi if [ -z $jarname ] then echo "no jar file found." exit 1 fi echo "the $classname is replacing..." fullpath=`jar -tvf $jarname | grep "/$classname" | awk '{print $nf}'` jar -xvf $jarname $fullpath mv $classname $fullpath jar -uvf $jarname $fullpath rm -r boot-inf
总结
到此这篇关于java替换jar包中class文件的文章就介绍到这了,更多相关java替换jar包class文件内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
推荐阅读
-
IDEA中使用Gradle构建项目中文报GBK错误的解决方案
-
将Java应用做成exe可执行软件的流程步骤
-
SpringBoot实现多种来源的Zip多层目录打包下载
需要将一批文件(可能分布在不同目录、不同来源)打包成zip格式,按目录结构导出给用户下载。1.核心思路支持将本地服务器上的文...
-
Java中减少if-else的设计模式和优化技巧
前言“过于依赖if-else不仅会让代码变得臃肿不堪,还会使维护成本大大增加。其实,if-else虽然是最基础的条件分支,...
-
Spring Boot 中使用 Drools 规则引擎的完整步骤
-
Spring Boot整合Drools规则引擎实战指南及最佳实践
一、drools简介与核心概念1.1什么是drools?drools是redhat旗下的开源业务规则管理系统(brms),...
-
Springboot项目瘦身之如何将jar包与lib依赖分开打包
将jar包与lib依赖分开打包方法一:项目和依赖完全分离maven-jar-plugin负责生成jar文件(jar文件中...
-
Spring动态修改bean属性配置key的几种方法
静态配置的局限性先来看一个典型场景。假设我们有一个数据源配置类:@configuration@configurationpr...
-
Java如何判断一个IP是否在给定的网段内
-
从零开始学java之二叉树和哈希表实现代码