美文网首页程序员Java 杂谈
使用Jar命令直接替换jar包中的class

使用Jar命令直接替换jar包中的class

作者: b00d1f0f0afd | 来源:发表于2018-04-28 11:19 被阅读1622次

    使用场景

    在平常的开发中,经常会遇到一些代码bug,并且有了bug修改后需要重新打包部署至服务器以修复bug,而在一些上线部属流程比较严格的公司,这个 打包->构建->代码检测->安全检测->提交流程->审批->部署 整个流程可能就需要耗时一天,所以一般情况下,我们是通过直接替换class然后重启的方式来进行变更的。

    使用方法

    在这里准备一个简单的小例子来说明如何使用 这个命令

    新建两个测试类

    • Main.java 这个类是主类,用于调用需要被替换的类的
    package com.lovedata.bigdata.jar;
    
    /**
     * Created by pengshuangbao on 2018/4/28.
     * <p>
     * 测试直接替换class文件而不用重启jar包
     *
     * @author pengshuangbao
     */
    public class Main {
    
        public static void main(String[] args) {
            NeedReplace.print();
        }
    
    }
    
    • NeedReplace 这个类是需要被替换的类,这里是修改之前。
    package com.lovedata.bigdata.jar;
    
    /**
     * Created by pengshuangbao on 2018/4/28.
     *
     * @author pengshuangbao
     */
    public class NeedReplace {
    
        public static void print() {
            System.out.println("before replace");
        }
    
    }
    
    

    打包为test.jar并且执行 java -jar test.jar 命令执行,执行结果如下

    现在需要修改 NeedReplace 类 ,将 “before replace” 修改为 “ after replace”

    在test.jar 的同目录下新建一个与NeedReplace 类的全路径相同的目录,执行以下命令

    md com\lovedata\bigdata\jar
    

    执行 java -jar 来进行替换

    jar uvf test.jar com\lovedata\bigdata\jar\NeedReplace.class
    

    再次执行 java -jar 命令查看效果,结果如下

    本文作者: 彭双宝
    原文链接: http://blog.lovedata.net/734335ef.html

    相关文章

      网友评论

        本文标题:使用Jar命令直接替换jar包中的class

        本文链接:https://www.haomeiwen.com/subject/gjtglftx.html