我有两个版本的同一个库,比如abc-1.0.jar和abc-2.0.jar 我无法避免我的应用程序工作,部分代码尚未迁移到2.0 我如何强制一个类对象和方法来自abc-2.0.jar?但不是我模块中的1.0.jar。
任何帮助非常感谢!
此致 Sashank
答案 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的那个,问题会变得相当复杂。