我正在将IC集成与IBM SBT SDK(Java)添加到仍使用xerces 2.4.0的现有项目中(截至2009年3月) .
使用IBM SBT SDK 1.0.x在这里没有引起任何问题,但是1.1.0的XML序列化实现完全依赖于org.w3c.xml.ls.DOMImplementationLS以及在将xerces移动到2004年的“xercesImpl”之后引入的这些东西 .
但是,该项目包含许多使用基于xerces和xml-apis的XML的代码,而且对于这些库的“更新”版本来说,移动速度太快会很危险 . 因此,我想“不要超过绝对要求” .
感谢maven没有人可以直接看到任何工件的哪个版本被加载,如果它没有在pom.xml中直接引用 . 因此我的问题:
IBM SBT SDK 1.1.0“真正”需要哪个版本的xercesImpl? 2.4.0是不够的,因为SBT SDK中使用的一些方法尚未在那里实现......
1 回答
依赖项中的xerces版本为2.9.0;看看DOMUtil.java#loadDriver()类但是有一些解决办法可以避免SBTK完全使用xerces:
如果您的容器允许控制类路径树,则从工具箱中隐藏xerces库将使其默认为其他驱动程序 . 另外,您可以提供与旧xerces版本兼容的自己的XercesDriver类,并利用类加载器将其加载到我们的版本中 .
如果您在osgi容器中,您还可以确保主机应用程序清单声明对版本<= 2.4.0的依赖性并加载两个xerces版本,让容器为您修复依赖项
无论如何,回答这个问题,使用:
我得到xerces版本2.9.0: