如何在Java的同一项目中使用同一库的两个版本?

Bri*_*nan 5 java jar

假设我在我的应用程序的一部分中使用了xmlsec-1.5.8.jar(它一直使用此功能)。

然后,假设我要向我的应用程序添加新功能,而新功能需要使用xmlsec-2.0.5.jar。

我不想替换所有旧代码的xmlsec用法,因为我不想重新测试所有已经正常工作的代码(很多代码我都不知道它是如何工作的,因为它已经在我到达这家公司之前创建的)。

Java中是否有一种方法可以在项目的一部分中使用xmlsec-1.5.8.jar类,然后在另一部分中使用xmlsec-2.0.5.jar?

Ste*_*enG 2

您需要研究类加载器。

这非常棘手,但这里有一个很好的解释。

Java、类路径、类加载 => 同一 jar/项目的多个版本

您可能必须卸载旧的 jar,加载新的 jar,运行新函数,然后卸载较新的 jar 并重新加载旧的 jar。

  • 您不一定需要加载或卸载类/库。您可以创建单独的类加载器来加载来自不同 JAR 文件的类。诀窍在于将您的作业分派给正确加载器加载的类。这是可以做到的,而且实际上是 OSGi 等平台所依赖的机制(动态加载和卸载捆绑为 JAR 文件的服务,并在运行时通过共享接口使其服务可用)。 (3认同)