jar包版本冲突,并且要保留两个版本都能使用

问题:在做项目时,遇到jar版本冲突的问题,并且老代码依赖不能用新jar包代替,要保证功能不变须要保证两个jar都能使用

思路:使用runtime 的exec 方式另启线程运行,然后返回结果

解决:

  1):创建可运行的jar包,并创建入口main方法,方法实现新功能的调用与结果或异常的返回

public static void main(String[] args) {
          try {
             //接收参数
             String privateKeyPath = args [0];
             /*
               业务逻辑
               */
             System.out.println("ok" );
             System.out.println(业务逻辑有返回结果,如果有 );
         } catch (Exception e ) {
             System.out.println("error" );
             System.out.println(e);
         }

  2):在项目新创建调用方法,本例使用windows 环境

                Runtime r = Runtime.getRuntime();
                  try{
                   //new String[]{"/bin/sh","-c","ln -s exe1 exe2"}) linux下的命令
                   Process proc = r .exec(new String[]{"cmd" ,"/c" ,"java -jar citicbankclient.jar gbz"});
                   BufferedReader reader = new BufferedReader(new InputStreamReader(proc.getInputStream(), "gbk" ));
                   String line = null ;
                   while ((line = reader.readLine()) != null){ //接收system.out输出
                      System. out.println(line);
                   }

                   int exitVal = proc.waitFor();  //调用是否成功
                   System. out.println(exitVal == 0 ? "ok" : "error" );
                 }
                  catch(Exception e ){
                   e.printStackTrace();
                 }
        

注意:这种方式是把新功能另启jvm来完成jar包隔离的,在高并发情况下会启动多个jvm,如果jvm不能很快的执行完,会消耗大量内存及cpu资源,

   解决这个问题只能控制并发量

 

转载于:https://www.cnblogs.com/--gbz--/p/4739076.html

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值