两个不同版本的JARS没有向后兼容性,相同的Classloader

时间:2017-09-15 08:15:31

标签: java jar classloader war libraries

我正在开发一个WAR应用程序,它的库中有 wss4j-1.6.11.jar 。 我想开发一个使用 wss4j-1.5.9.jar 的新功能,将其打包在JAR文件中,并将其放在WAR 类加载器在运行时加载的目录中。 我必须使用 wss4j-1.6.11.jar 因为WAR应用程序不属于我的属性,而 wss4j-1.5.9.jar 因为有一个类在1.6.11版本中不存在。 当我将两个JARS放在同一个类加载器中时,它工作“很好”:

  • 如果我得到一个仅在 wss4j-1.6.11.jar (MemoryReplayCache.class)中的类的实例,它就会很好地创建。
  • 如果我得到一个只在 wss4j-1.5.9.jar (WSDoAllSender.class)中的类的实例,它就会很好地创建。
  • 如果我得到一个类 wss4j-1.6.11.jar wss4j-1.5.9.jar (RequestData.class)的实例,它会创建 wss4j-1.5.9.jar 类的一个实例。

问题是:我们应该相信这种实施吗?为什么,如果它总是说类加载器忽略重复的JAR,它是否有效?

最终的架构在WEB-INF / lib文件夹中都有两个JARS。所以, wss4j-1.6.11.jar wss4j-1.5.9.jar 以相同的方式加载

0 个答案:

没有答案