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资源,

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

 

时间: 2024-10-10 04:19:59

jar包版本冲突,并且要保留两个版本都能使用的相关文章

解决maven的jar包依赖冲突的两种方案

方案1 直接点,直接exculde掉 1.先去下载maven helper的plugin   https://segmentfault.com/a/1190000018138945 2.直接exculde掉 选中冲突的jar包,然后exculde 方案2 两个版本冲突, 在项目pom.xml声明使用的版本 原文地址:https://www.cnblogs.com/zhangchiblog/p/11175340.html

访问不到主页index.jsp的原因是servlet-api.jar包有冲突,删除lib的servlet-api.jar,如果报错则添加Apache Tomcat下的 servlet-api.jar 即可。

HTTP Status 500 - Unable to compile class for JSP: type Exception report message Unable to compile class for JSP: description The server encountered an internal error that prevented it from fulfilling this request. exception org.apache.jasper.JasperE

【转】Windows7 下安装 JDK 7 时版本冲突问题解决

原文网址:http://wxl24life.iteye.com/blog/1966058 自己电脑上一直用的 JDK 版本是 1.6,今天决定更新到 1.7,在安装 JDK 1.7 后,控制台输入 java 命令测试是否安装成功的时候报错了: Other代码   C:\Users\wxl24life>java Registry key 'Software\JavaSoft\Java Runtime Environment\CurrentVersion' has value '1.7', but 

websphere找不到类或jar包冲突

Jar包冲突问题是在大型Java软件开发中经常遇到的问题,系统开发人员经常会为解决类似的问题耗费大量的时间进行调试和测试,本文根据各种际情况,结合WebSphere中类加载器,讨论了几种解决jar包冲突问题的办法,并给出了具体实现的步骤及源代码.读者定位为具有Java和WebSphere开发经验的开发人员.读者可以学习到在WebSphere中类加载器的定义以及解决jar包冲突问题的几种办法,并可以直接使用文章中提供的Java代码,从而节省他们的开发和调试时间,提高效率. 大型的基于WebSphe

服务器Jar包冲突的解决

在开发测试时正常, 一旦部署到正式服务器上, 如果出现以下几类异常,很可能是存在jar包冲突: 1, java类找不到 java.lang.ClassNotFoundException2, 方法不存在 java.lang.NoSuchMethodError3, 字段不存在 java.lang.NoSuchFieldError4, 类错误 java.lang.LinkageError war包中jar包和服务器上jar包冲突, 由于现在服务器功能越来越强大, 而引入的jar也在不断增加, 出现的冲

重新看待Jar包冲突问题及解决方案

Jar包冲突是老生常谈的问题,几乎每一个Java程序猿都不可避免地遇到过,并且也都能想到通常的原因一般是同一个Jar包由于maven传递依赖等原因被引进了多个不同的版本而导致,可采用依赖排除.依赖管理等常规方式来尝试解决该问题,但这些方式真正能彻底解决该冲突问题吗?答案是否定的.笔者之所以将文章题目起为"重新看待",是因为之前对于Jar包冲突问题的理解仅仅停留在前面所说的那些,直到在工作中遇到的一系列Jar包冲突问题后,才发现并不是那么简单,对该问题有了重新的认识,接下来本文将围绕Ja

曹工杂谈:用好verbose,Jar包冲突不再难

Jar包冲突的相关文章: 了不得,我可能发现了Jar 包冲突的秘密 一.前言 jar包冲突分多种,简单理解来说,就是同package且同名的类在多个jar包内出现,如果两个jar包在同一个classloader下,那么最终的结果是,只会加载其中的一个. 有时,这个错误一般在运行时出现,报的错可能是,找不到某方法,或者呢,更隐蔽的,不会报错,但是逻辑不对. 针对运行中的应用,可以考虑使用阿里出品的arthas来处理. 我今天呢,只是简单的找不到方法的情况,所以不需要用到那个. 我这里的场景是,在学

关于程序中使用servlet-api.jar和jsp-api.jar与服务器lib包jar包冲突的问题

一.maven引入依赖 <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <javax.servlet-api.version>4.0.1</javax.servlet-api.version> // 请自行选择最新版本号 <javax.servlet.jsp-api.version>2.3.3</javax.servl

解决Maven的jar包冲突

最近的一次项目引入了MongoDB,撸完代码,启动服务,Junit单元测试一跑,报错: java.lang.NoClassDefFoundError: org/springframework/core/DefaultParameterNameDiscoverer at org.springframework.data.mapping.model.PreferredConstructorDiscoverer.<clinit>(PreferredConstructorDiscoverer.java