ClassCastException: org.apache.xerces.parsers.XIncludeAwareParserConfiguration can cast to org.apache.xerces.xni.parser.XMLParserConfiguration
我正在 Eclipse 中开发一个 GWT 应用程序,并使用 jdom2 读取一些自定义 xml 属性文件。
在最近的更新之后,我的应用程序现在在尝试读取xml文件时失败并出现上述错误。相关的堆栈跟踪为:
org.apache.xerces.parsers.XIncludeAwareParserConfiguration cannot be cast to org.apache.xerces.xni.parser.XMLParserConfiguration
org.apache.xerces.parsers.SAXParser.<init>(Unknown Source)
org.apache.xerces.parsers.SAXParser.<init>(Unknown Source)
org.apache.xerces.jaxp.SAXParserImpl$JAXPSAXParser.<init>(Unknown Source)
org.apache.xerces.jaxp.SAXParserImpl.<init>(Unknown Source)
org.apache.xerces.jaxp.SAXParserFactoryImpl.newSAXParser(Unknown Source)
org.jdom2.input.sax.XMLReaders.createXMLReader(XMLReaders.java:165)
org.jdom2.input.SAXBuilder.createParser(SAXBuilder.java:871)
org.jdom2.input.SAXBuilder.buildEngine(SAXBuilder.java:854)
org.jdom2.input.SAXBuilder.getEngine(SAXBuilder.java:904)
org.jdom2.input.SAXBuilder.build(SAXBuilder.java:1116)
uk.co.platosys.db.jdbc.DatabaseProperties.loadProperties(DatabaseProperties.java:78)
研究这个问题表明,当类路径上存在不兼容版本的xerces jar时,可能会出现错误。
gwt-dev-2.6.1.jar包含xerces软件包,我的直觉是这个最新版本的gwt-dev捆绑了一个不兼容的版本。然而,当前版本jdom2.0.5与Xerces的2.11版本一起发布,这似乎是Apache最新发布的。将这些jar放在我的类路径上似乎并不能解决问题;我以前能够依赖gwt-dev中的版本。
我对此相当机智,并且大大超出了我的舒适区。