我有两个冲突的JAR文件。它们都包含相同包名和类名的类。由于某些原因,我无法删除其中任何一个。
那么,有没有办法解决这个问题?理想情况下,我希望在运行时可以决定在哪个JAR文件中调用类。
非常感谢大家的帮助。
http://java.dzone.com/articles/java-classloader-handling
http://javarevisited.blogspot.in/2012/12/how-classloader-works-in-java.html
这是一个旧话题,但有一个解决JAR冲突的方法,但它只适用于JAVA 8。您可以将冲突的JAR文件移动到两个单独的文件夹中,然后在“java.endorsed.dirs”属性中按正确顺序提及它们。这将强制您的应用程序预加载认可的JAR文件及其类以指定的顺序,从而在调用时强制使用所需的类。我为我的运行在JBoss上的应用程序做了这件事,并且有2个具有完全相同类和包的JAR文件。复杂性在于,最终我认可了23个JAR文件而不是2个,因为存在依赖关系,但最终解决方法奏效了-真正的问题得到了解决。不幸的是,从Java8开始,java.endorsed.dirs的支持被删除。如果有人知道如何在最新的Java中执行类似的技巧,请分享。