Xerces 错误:org.apache.xerces.impl.dv.dtd.DTDDVFactoryImpl
Posted
技术标签:
【中文标题】Xerces 错误:org.apache.xerces.impl.dv.dtd.DTDDVFactoryImpl【英文标题】:Xerces error: org.apache.xerces.impl.dv.dtd.DTDDVFactoryImpl 【发布时间】:2011-06-11 10:25:33 【问题描述】:我正在使用 JSF 2.0、NetBeans 6.9.1、GlassFish Server 3.1、mojarra 2.0.3 和 JasperReports 3.7.6 开发一个 Web 应用程序。我的项目库中包含 jar 文件“xerces-2.8.0.jar”。该文件是作为 JasperReports jar 文件库的一部分导入的。每当我尝试通过 NetBeans 部署、运行或调试我的项目时,都会收到以下错误:
java.lang.Exception: java.lang.IllegalStateException: ContainerBase.addChild: start: org.apache.catalina.LifecycleException: com.sun.faces.config.ConfigurationException: CONFIGURATION FAILED! DTD factory class org.apache.xerces.impl.dv.dtd.DTDDVFactoryImpl does not extend from DTDDVFactory.
在我的项目发生任何更改后,我的构建失败,并且当我尝试部署、运行或调试它时收到上述错误。我必须重新启动服务器并再次运行/调试。我搜索了互联网,找不到解决此问题的方法。我查看了有问题的 jar 文件,并且 DTDDVFactoryImpl 确实从 DTDDVFactory 扩展 - 我不知道为什么会收到此错误。虽然我最终可以让我的项目运行,但如果我没有收到此错误会更好。
谁能告诉我如何解决这个问题?我需要从我的项目库中删除此文件吗?我需要用新版本/旧版本更新这个文件吗?
【问题讨论】:
我没有。我以为我已经弄清楚了。我在项目中有多个 Xerxes jar 文件。我认为通过删除多余的可以解决问题。我错了。它继续定期给我这个错误。 【参考方案1】:将 Selenium 与 Glassfish 一起使用时出现此错误。我通过将 XML jar (xerces-*, xalan-*, xml-apis*, serialize*
) 从 selenium/libs/
复制到 $AS_HOME/lib/endorsed
(对于 Glassfish 2)或复制到 $AS_HOME/glassfish/lib/endorsed
对于 Glassfish 4 来解决这个问题。
【讨论】:
我也有类似的问题。我在我的 WebLogic 应用程序中添加了一些额外的 Spring 内容(消息驱动的 POJO),现在我收到了这个错误。 WL 10.3.4,春季 3.0.5。 (是的,我知道 Spring 至少应该是 3.2.10。我希望在升级 Spring 之前得到改变。)【参考方案2】:如果您提供自己的 xerces.jar,则必须通过认可的标准覆盖机制 (java -Djava.endorsed.dirs=/path/to/xerces.jar
) 执行此操作,您不能仅将其添加到类路径中(如果迟早会遇到麻烦,如果你做)。让我解释一下。
JAXP 是Java API for XML Processing。 JAXP 对象(如解析器、XSLT 转换器、DOM 文档)的创建是通过factory/factory-method pattern 完成的,因此您可以插入一个新的 JAXP 实现(它必须比 JRE 中提供的更新)。 Xerces 提供(部分)JAXP 实现并包含认可的标准(认可的标准是通过 Java 社区流程以外的标准流程定义的 Java API,请参阅Endorsed Standards Override Mechanism)。不使用ESOM会遇到各种麻烦。
【讨论】:
以上是关于Xerces 错误:org.apache.xerces.impl.dv.dtd.DTDDVFactoryImpl的主要内容,如果未能解决你的问题,请参考以下文章
Xerces链接错误原因之/Zc:wchar_t-设置不一致
使用 Xerces 将 DOM 序列化为 FileOutputStream
正在尝试构建 xerces c++ 解析器。 Netbeans 和命令行构建错误未定义对“xercesc_3_2 ...”的引用
java.lang.ClassNotFoundException:org / apache / xerces / jaxp / DocumentBuilderFactoryImpl
com.sun.org.apache.xerces.internal.impl.io.MalformedByteSequenceException: 3 字节的 UTF-8 序列的字节 x 无效(代码