相关:manage conflict on java classpath如何管理图书馆冲突? (相同的封装,不同版本)
也涉及:Java Classloader - how to reference different versions of a jar
我在这各拥有两个jar文件有它包含在jar文件本身的依赖,但两者是不同的版。
a.jar -> has c.class/c2.class/c3.class/.. version 0.3 in it
b.jar -> has c.class/c2.class/c3.class/.. version 1.0 in it
但是,当我试图在同一个项目中使用这两者。它似乎只使用c.class从一个罐子,但没有另一个。由于这两个版本的API都非常不同,所以这成为一个问题。无论如何要告诉他们只需从各自的jar中使用c.class?我不能在这里修改a.jar和b.jar。
btw。快速搜索后,似乎人们建议OSGI和类加载器,但我知道它应该是最快的方式来处理它? (已经读了一些关于classloader的内容,但仍不确定如何使用它)。
编辑:我更喜欢使用原始库他们打包,因为我已经分别评估这两个jar(他们是文本挖掘工具具有相同的后端,但版本是非常不同的)。现在我想将它们两个整合为一个,并尽可能地使环境接近原始。 现在我按照Travis Webb的解决方案,但我仍然想知道为什么jar不分开这两个库。
相关问题:http://stackoverflow.com/questions/274317/mixing-different-versions-of-java-libraries –