首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Xerces错误: org.apache.xerces.impl.dv.dtd.DTDDVFactoryImpl

Xerces错误: org.apache.xerces.impl.dv.dtd.DTDDVFactoryImpl
EN

Stack Overflow用户
提问于 2011-01-19 07:08:18
回答 2查看 20.7K关注 0票数 26

我正在使用JSF2.0、NetBeans 6.9.1、GlassFish Server3.1、Mojarra2.0.3和JasperReports 3.7.6开发一个web应用程序。我的项目库中包含jar文件"xerces-2.8.0.jar“。此文件是作为JasperReports jar文件库的一部分导入的。每当我尝试通过NetBeans部署、运行或调试我的项目时,都会收到以下错误:

代码语言:javascript
复制
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扩展而来的--我不知道为什么会收到这个错误。虽然我最终可以让我的项目运行起来,但如果我没有收到这个错误就更好了。

有人能告诉我怎么解决这个问题吗?我是否需要从我的项目库中删除此文件?是否需要使用新版本/旧版本更新此文件?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-07-22 20:40:32

如果您提供了自己的xerces.jar,则必须通过认可的标准覆盖机制(java -Djava.endorsed.dirs=/path/to/xerces.jar)来执行此操作,而不允许仅将其添加到类路径上(如果这样做,迟早会遇到麻烦)。让我解释一下。

JAXP就是Java API for XML Processing。JAXP对象(如解析器、XSLT transfomers、DOM文档)的创建是通过factory/factory-method pattern完成的,因此您可以插入新的JAXP实现(它必须比JRE中提供的实现更新)。Xerces提供(一部分) JAXP实现并包含认可的标准(认可的标准是通过标准过程定义的Java API,而不是Java Community过程,参见Endorsed Standards Override Mechanism)。如果你不使用ESOM,你会遇到各种各样的麻烦。

票数 22
EN

Stack Overflow用户

发布于 2014-02-19 11:31:44

在Glassfish中使用Selenium时,我得到了这个错误。我通过将XML (xerces-*, xalan-*, xml-apis*, serialize*)从selenium/libs/复制到$AS_HOME/lib/endorsed (对于Glassfish 2)或复制到$AS_HOME/glassfish/lib/endorsed (对于Glassfish 4 )来解决这个问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4730103

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档