Java tomcat中的类加载器问题?(xercesImpl)

Java tomcat中的类加载器问题?(xercesImpl),java,tomcat,serviceloader,Java,Tomcat,Serviceloader,我有两个应用程序必须部署在同一个tomcat(版本7.0.56)上 应用程序A使用xerces(依赖于xercesimpl.jar)。 第二个应用程序(B)没有这种依赖关系,但正在执行一些xml工作 在服务器上单独部署应用程序B时,一切正常。 在同一台服务器上部署应用程序B和应用程序A时,当应用程序B尝试执行其xml工作时,我遇到了一个异常: org.xml.sax.SAXException: SAX2 driver class org.apache.xerces.parsers.SAXPars

我有两个应用程序必须部署在同一个tomcat(版本7.0.56)上

应用程序A使用xerces(依赖于xercesimpl.jar)。 第二个应用程序(B)没有这种依赖关系,但正在执行一些xml工作

在服务器上单独部署应用程序B时,一切正常。 在同一台服务器上部署应用程序B和应用程序A时,当应用程序B尝试执行其xml工作时,我遇到了一个异常:

org.xml.sax.SAXException: SAX2 driver class org.apache.xerces.parsers.SAXParser not found java.lang.ClassNotFoundException: org.apache.xerces.parsers.SAXParser
这意味着在应用程序B中,服务器仍然可以看到xercesimpl.jar/META-INF/services/javax.xml.parsers.SAXParserFactory

我正在通过wtp将tomcat与eclipse(mars)一起使用。 有人有同样的问题或关于这种情况的任何信息吗


对我来说,这意味着如果tomcat中的一个应用程序使用xerces,那么同一服务器上的所有应用程序都必须使用xerces。

我尝试用两个Web应用程序重现您的实验,但我的很好。你知道这个META-INF/services/etc实际上是从哪里读取的吗?在每个webapp中调用
getClass().getClassLoader().getResources(“META-INF/services/javax.xml.parsers.SAXParserFactory”)
并打印结果。您使用的xercesImpl版本是什么?什么版本的Java?另一个建议是:使用
-Djaxp.debug=1运行服务器,并读取输出中显示的跟踪。