我正在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 jars 版本时,可能会出现错误。
gwt-dev-2.6.1.jar 包含 xerces packages,我猜测这个最新版本的 gwt-dev 已经捆绑了一个不兼容的版本。然而,当前版本的 jdom2.0.5 是与 Xerces 2.11 版本一起发布的,它似乎是由 Apache 最新发布的版本。将这些 jars 加入到我的类路径中似乎无法解决问题;我以前一直能够依赖于 gwt-dev 中的版本。
我对此非常苦恼,感觉自己已经超出了舒适区。