码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2015-08-18 13:55:52      阅读:203      评论:0      收藏:0      [点我收藏+]

标签:

问题:在做项目时,遇到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资源,

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

 

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

标签:

原文地址:http://www.cnblogs.com/--gbz--/p/4739076.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!