在我的项目中,有2个库,每个库都依赖于XML解析类java.xml.parsers.DocumentBuilderFactory。这些库中的每一个都引用来自不同 jar 的文件(一个从名为 xmlParserAPIs 的 jar 获取它,而另一个从 xml-apis-1.0.b2.jar 获取它)。不幸的是,每个文件中都有不同版本的类,因此我看到运行时错误,具体取决于它们的加载顺序。这两个 xml jar 都是 3rd 方库的传递依赖项。有没有好的办法来处理这个冲突呢?
编辑:我不确定它是否会对如何处理问题产生影响,但这仅发生在测试中,因为依赖项之一位于测试范围内。
谢谢,
杰夫
(...)不幸的是,每个文件中都有不同版本的类,因此我看到运行时错误,具体取决于它们的加载顺序。
理论上,xml-apis.jar
and xmlParserAPIs.jar
(来自 xerces2-j)是相同的 JAR但名字不同,xmlParserAPIs.jar
已被弃用多年(参见这条信息 http://markmail.org/thread/hj6kdvgsvxtqmhtp and this one http://markmail.org/message/pcolq7lt2wekkbmu).
如果您的依赖项依赖于不同且不兼容的版本xml-apis.jar
,我想说这些依赖项是互斥的,换句话说是不兼容的,至少对于您正在使用的版本而言是这样。唯一的解决方案是找到具有收敛依赖性的版本。
如果他们可以使用兼容版本,请使用依赖项排除 http://maven.apache.org/guides/introduction/introduction-to-optional-and-excludes-dependencies.html for xmlParserAPIs.jar
to use xml-api.jar
only.
我不确定它是否会对如何处理问题产生影响,但这仅发生在测试中,因为依赖项之一位于测试范围内。
不,这只是解释了为什么你在运行时没有遇到问题(因为test
那么scoped不在类路径上,显然,不冲突)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)