0

我正在将与 IBM SBT SDK (Java) 的 IC 集成添加到仍然使用 xerces 2.4.0(截至 2009 年 3 月)的现有项目中。

使用 IBM SBT SDK 1.0.x 在这里没有造成任何问题,但是 1.1.0 的 XML 序列化实现完全依赖于 org.w3c.xml.ls.DOMImplementationLS 以及大约在 2004 年将 xerces 移动到“xercesImpl”之后引入的此类东西.

然而,该项目包含许多使用基于 xerces 和 xml-apis 的 XML 的代码,并且过快地迁移到这些库的“更新”版本看起来很危险。因此,我想“不超过绝对需要”。

感谢 maven,如果没有在 pom.xml 中直接引用,没有人可以直接看到加载了任何工件的哪个版本。因此我的问题是:

IBM SBT SDK 1.1.0“真正”需要哪个版本的 xercesImpl?2.4.0 是不够的,因为 SBT SDK 中使用的一些方法还没有在那里实现......

4

1 回答 1

1

依赖项中的 xerces 版本为 2.9.0;查看DOMUtil.java#loadDriver()类,但是有一些解决方法可以避免 SBTK 完全使用 xerces:

如果您的容器允许控制类路径树,则从工具包中隐藏 xerces 库将使其默认为其他驱动程序。或者,您可以提供自己的与旧 xerces 版本兼容的 XercesDriver 类,并利用类加载器来代替我们加载它。

如果您在 osgi 容器中,您还可以确保主机应用程序清单声明对版本 <=2.4.0 的依赖关系并加载两个 xerces 版本,让容器为您修复依赖关系

无论如何,要回答这个问题,请使用:

mvn dependency:list

我得到了 xerces 的 2.9.0 版本:

 The following files have been resolved:
    com.ibm.sbt:com.ibm.commons:eclipse-plugin:9.0.0:provided
    p2.eclipse-plugin:javax.servlet:jar:3.0.0.v201112011016:system
    p2.eclipse-plugin:javax.xml:jar:1.3.4.v201005080400:system
    p2.eclipse-plugin:org.apache.xalan:jar:2.7.1.v201005080400:system
    p2.eclipse-plugin:org.apache.xerces:jar:2.9.0.v201101211617:system
    p2.eclipse-plugin:org.apache.xml.resolver:jar:1.2.0.v201005080400:system
    p2.eclipse-plugin:org.apache.xml.serializer:jar:2.7.1.v201005080400:system
    p2.eclipse-plugin:org.eclipse.core.contenttype:jar:3.4.200.v20120523-2004:system
    p2.eclipse-plugin:org.eclipse.core.jobs:jar:3.5.300.v20120912-155018:system
    p2.eclipse-plugin:org.eclipse.core.runtime:jar:3.8.0.v20120912-155025:system
    p2.eclipse-plugin:org.eclipse.equinox.app:jar:1.3.100.v20120522-1841:system
    p2.eclipse-plugin:org.eclipse.equinox.common:jar:3.6.100.v20120522-1841:system
    p2.eclipse-plugin:org.eclipse.equinox.preferences:jar:3.5.1.v20121031-182809:system
    p2.eclipse-plugin:org.eclipse.equinox.registry:jar:3.5.200.v20120522-1841:system
    p2.eclipse-plugin:org.eclipse.osgi:jar:3.8.2.v20130124-134944:system
于 2014-09-29T14:26:08.067 回答