gpt4 book ai didi

java - ClassCastException : org. apache.xerces.parsers.XIncludeAwareParserConfiguration 无法转换为 org.apache.xerces.xni.parser.XMLParserConfiguration

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:43:24 26 4
gpt4 key购买 nike

我正在 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 与 2.11 版本的 Xerces 一起发布,这似乎是 Apache 最新发布的版本。将这些 jar 放在我的类路径中似乎并不能解决问题;我以前能够依赖 gwt-dev 中的版本。

我对此束手无策,而且相当超出我的舒适范围。

最佳答案

当我将我的项目从 GWT 2.7 升级到 GWT 2.8 时,我遇到了同样的异常。我不知道为什么 GWT 2.7 没有这个问题(可能 Eclipse 项目的 .classpath 文件中的不同位置可能会影响它)。

该异常的原因是之前有这样的代码:

DocumentBuilderFactory newInstance = DocumentBuilderFactory.newInstance();
DocumentBuilder newDocumentBuilder = newInstance.newDocumentBuilder();
baseLayoutXmlDocument = newDocumentBuilder.parse( baseLayoutSvgInputStream );

SAXParserFactory spf = SAXParserFactory.newInstance();
SAXParser sp = spf.newSAXParser();

使用了来自 JDK 包 com.sun.org.apache.xerces.internal.jaxp 的实现,但是在升级到 GWT2.8 之后,我的应用程序选择了来自 gwt-dev.jar 的 xerces。我根据 Javadoc 和 link here 找到了解决方法使用的系统属性

-Djavax.xml.parsers.DocumentBuilderFactory=com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderFactoryImpl
-Djavax.xml.parsers.SAXParserFactory=com.sun.org.apache.xerces.internal.jaxp.SAXParserFactoryImpl

关于java - ClassCastException : org. apache.xerces.parsers.XIncludeAwareParserConfiguration 无法转换为 org.apache.xerces.xni.parser.XMLParserConfiguration,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24805360/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com