Sea*_*ean 26 jsf glassfish jasper-reports xerces
我正在使用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.
Run Code Online (Sandbox Code Playgroud)
在我的项目中的任何更改后,我的构建失败,当我尝试部署,运行或调试它时,我收到上述错误.我必须重新启动服务器并再次运行/调试.我搜索过互联网,无法找到解决这个问题的方法.我查看了有问题的jar文件,并且DTDDVFactoryImpl确实从DTDDVFactory扩展 - 我不知道为什么我收到此错误.虽然我最终可以让我的项目运行,但如果我没有收到此错误会更好.
任何人都可以告诉我如何解决这个问题?我是否需要从项目库中删除此文件?我是否需要使用较新版本/旧版本更新此文件?
ivy*_*ivy 22
如果你提供自己的xerces.jar,你必须通过Endorsed Standards Override Mechanism(java -Djava.endorsed.dirs=/path/to/xerces.jar
)来做到这一点,你不能只在类路径上添加它(如果你这样做,迟早会遇到麻烦).让我解释.
JAXP是用于XML处理的Java API.JAXP对象(如解析器,XSLT transfomers,DOM Documents)的创建是通过工厂/工厂方法模式完成的,因此您可以插入新的JAXP实现(它必须比JRE中提供的实现更新).Xerces提供(部分)JAXP实现并包含认可标准(认可标准是通过除Java Community Process之外的标准流程定义的Java API,请参阅认可标准覆盖机制).如果你不使用ESOM,你会遇到各种各样的麻烦.
归档时间: |
|
查看次数: |
18633 次 |
最近记录: |