1,背景介绍
往往我们有些包没有源代码,只有需要修改类的源码的情况下,我们更改了源码的类,但是需要将新代码打入到jar包中,我们没有源码,我们的使用不编译打包的方法实现
2,实现步骤
2.1,目前jar包:pingan-etl-analyser-2.1.0.jar 需要替换的类名:CoCode36Utils.java
2.2,将jar包和类都上传到服务器上
2.3,查找到jar包中需要替换的类名
jar -tvf pingan-etl-analyser-2.1.0.jar | grep CoCode36Utils
输出结果:
com/everdata/etl/analyser/utils/CompressCode36Utils.class
com/pingan/etl/analyser/utils/CoCode36Utils.class
2.4 从jar包中解压出需要替换的类
jar -xvf pingan-etl-analyser-2.1.0.jar com/pingan/etl/analyser/utils/CoCode36Utils.class
2.5 将更改后的java文件转成.class
javac CoCode36Utils.java
2.6 用新的CoCode36Utils.class 覆盖com/pingan/etl/analyser/utils/CoCode36Utils.class
2.7 重新将类打入包中
jar -uvf pingan-etl-analyser-2.1.0.jar com/pingan/etl/analyser/utils/CoCode36Utils.class