Jar 处理重复罐的最佳实践是什么

Jar 处理重复罐的最佳实践是什么,jar,classloader,conflict,Jar,Classloader,Conflict,我正在将JBPM5.2纳入我现有的项目中。我注意到一些jar文件是重复的。 下面是清单 my jbpm activation-1.1.jar 1.1 1.1 antlr-2.7.7.jar 2.7.7 2.7.7 Common-collections 2.1 3.1 common-io 1.1 1.4 dom4j-1.6.1.jar 1.6.1 1.6.1 Jdom-1.0.jar 1.0 1.0 J

我正在将JBPM5.2纳入我现有的项目中。我注意到一些jar文件是重复的。 下面是清单

my jbpm activation-1.1.jar 1.1 1.1 antlr-2.7.7.jar 2.7.7 2.7.7 Common-collections 2.1 3.1 common-io 1.1 1.4 dom4j-1.6.1.jar 1.6.1 1.6.1 Jdom-1.0.jar 1.0 1.0 Jta.jar 1.0 1.1 Log4j 1.2.15 1.2.14 Mail.jar 1.4 1.4 我不想升级那些jar,因为这意味着我必须对现有的函数进行彻底的回归测试,这是非常困难的。基本上,我正在寻找一个安全和简单的方法


我相信这是很多人遇到的一个非常普遍的问题。有人能和我分享一下他/她的方法吗

我能想到的选择很少

如果您的部署单元是EAR,我不确定这是否适用于您的应用程序。因为WAR可以有自己的类加载器,所以您可以将JAR本地化到webapp。浏览这篇文章

另一种可能性是将JBPM单独部署为一个单独的应用程序

升级JAR是我的首选:从我所看到的commons-*是唯一在次要版本中也推迟升级的JAR。所以你什么都不用担心。烟雾测试或简单的功能测试是您可能需要的全部


那么,你的应用程序对jbpm有什么依赖关系呢?jbpm和jar会在同一个类加载器下的同一个JVM中吗?如果是这样,你就有问题了。升级是唯一正确的解决方案

通常,在web应用程序中,例如Tomcat或Jetty,服务器所需的库位于服务器的类路径上。正在部署的每个web应用程序都有自己的类加载器。您所依赖的库在此类加载器上可用,它不会污染容器本身