我有一个服务器端 Web 应用程序代码,它使用 mule 来使用 xml 消息并进行一些处理。最近我已经转移到一个新的tomcat版本。当 mule 尝试将 xml 转换为 dom 时,我看到以下错误。
Exception Stack trace:
1. org.apache.xerces.parsers.XIncludeAwareParserConfiguration 不能转换为 org.apache.xerces.xni.parser.XMLParserConfiguration (java.lang.ClassCastException) org.apache.xerces.parsers.DOMParser:-1 (null) 2. org.apache.xerces.parsers.XIncludeAwareParserConfiguration 不能转换为 org.apache.xerces.xni.parser.XMLParserConfiguration (java.lang.ClassCastException) (org.mule.api.transformer.TransformerException) org.mule.module.xml。转换器.XmlToDomDocument:64 (http://www.mulesource.org/docs/site/current2/apidocs/org/mule/api/transformer/TransformerException.html)
根异常堆栈跟踪:java.lang.ClassCastException:org.apache.xerces.parsers.XIncludeAwareParserConfiguration 无法在 org.apache.xerces.parsers.DOMParser 中转换为 org.apache.xerces.xni.parser.XMLParserConfiguration。(未知来源)在 org.apache.xerces.parsers.DOMParser.(Unknown Source) at org.apache.xerces.jaxp.DocumentBuilderImpl.(Unknown Source) at org.apache.xerces.jaxp.DocumentBuilderFactoryImpl.newDocumentBuilder(Unknown Source) at com.sun .org.apache.xalan.internal.xsltc.trax.SAX2DOM.createDocument(SAX2DOM.java:324) 在 com.sun.org.apache.xalan.internal.xsltc.trax.SAX2DOM.(SAX2DOM.java:84) 在com.sun.org.apache.xalan.internal.xsltc.runtime.output.TransletOutputHandlerFactory.getSerializationHandler(TransletOutputHandlerFactory.java:187) 在 com.sun.org.apache.xalan.internal。xsltc.trax.TransformerImpl.getOutputHandler(TransformerImpl.java:392) 在 com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transform(TransformerImpl.java:298) 在 org.mule.module.xml。 org.mule.transformer.AbstractTransformer.transform(AbstractTransformer.java:254) 上的transformer.XmlToDomDocument.doTransform(XmlToDomDocument.java:58)
我认为这是因为我的 WEB-INF/lib 目录中的 xerces 2.9.1 造成的。我取下了罐子,一切正常。问题是我需要在我的库中使用该 jar,因为库中有一些其他遗留的 3rd pary jar 需要在类路径中使用 xerces 版本。
- 有没有一种方法可以让我指定一个不同的 DOM 解析器并让 mule 从类路径中获取它。
- 我检查了 xerces java doc,XIncludeAwareParserConfiguration 确实实现了 XMLParserConfiguration。想知道为什么它会抛出一个类广播吗?
谢谢