当存在多个版本化jar时,如何强制从特定版本jar调用方法调用

时间:2011-01-21 14:37:56

标签: java jar

我有两个版本的同一个库,比如abc-1.0.jar和abc-2.0.jar 我无法避免我的应用程序工作,部分代码尚未迁移到2.0 我如何强制一个类对象和方法来自abc-2.0.jar?但不是我模块中的1.0.jar。

任何帮助非常感谢!

此致 Sashank

2 个答案:

答案 0 :(得分:1)

没有完全通用且简单的解决方案。

  • 最简单的解决方案是将2个JAR文件放在类路径上,2.0 JAR文件放在1.0 JAR文件之前。这可能适用于您的用例,但如果您需要使用某个类的旧版本,则无法使用。

  • 另一个解决方案是将有问题的类放入一个新的JAR文件中,并将其放在1.0和2.0 JAR文件之前的类路径中。但重新组织JAR文件可能不是一种选择。

  • 复杂的方法是为1.0和2.0 JAR文件编写自定义类加载器。这是很多工作,可能没必要。

答案 1 :(得分:0)

如果,只要存在歧义(两个罐中的同一个类)你想使用2.0 jar,那么你可以确保2.0 jar位于类路径上的1.0 jar之前。

如果它只是一个(或几个)类,你想要使用2.0 jar,而其他你想要使用1.0 jar的那个,问题会变得相当复杂。