2011-01-18 15 views
25

Estoy desarrollando una aplicación web usando JSF 2.0, NetBeans 6.9.1, GlassFish Server 3.1, mojarra 2.0.3 y JasperReports 3.7.6. Incluido en mi biblioteca de proyectos está el archivo jar "xerces-2.8.0.jar". Este archivo se importó como parte de la biblioteca de archivos jar JasperReports. Siempre que intento de implementar, ejecutar o depurar mi proyecto a través de NetBeans, recibo este error:Error de Xerces: org.apache.xerces.impl.dv.dtd.DTDDVFactoryImpl

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. 

Después de cualquier cambio en mi proyecto de mi generación falla, y recibo el error anterior, cuando intento de implementar, ejecutar o depurarlo. Tengo que reiniciar el servidor y ejecutar/depurar por segunda vez. He buscado en Internet y no puedo encontrar una solución a este problema. He examinado el archivo jar en cuestión, y DTDDVFactoryImpl se extiende desde DTDDVFactory. No sé por qué estoy recibiendo este error. Aunque eventualmente puedo ejecutar mi proyecto, sería mucho mejor si no recibiera este error.

¿Alguien puede decirme cómo puedo solucionar esto? ¿Debo eliminar este archivo de la biblioteca de mi proyecto? ¿Debo actualizar este archivo con una versión más nueva/versión anterior?

+0

Hola, ¿ha encontrado la solución? – Osw

+1

No tengo. Pensé que lo había resuelto. Tenía varios archivos jar de Xerxes en el proyecto. Pensé que al eliminar el redundante arreglaría las cosas. Estaba equivocado. Continuamente me da este error. – Sean

Respuesta

22

Si proporciona su propio xerces.jar, tiene que hacerlo a través del Mecanismo de anulación de estándares endosados ​​(java -Djava.endorsed.dirs=/path/to/xerces.jar), no tiene permitido agregarlo en el classpath (y tarde o temprano tendrá problemas si hacer). Dejame explicar.

JAXP es el Java API for XML Processing. La creación de objetos JAXP (como analizadores sintácticos, transfusiones XSLT, documentos DOM) se realiza a través del factory/factory-method pattern para que pueda agregar una nueva implementación JAXP (tiene que ser más nueva que la proporcionada en su JRE). Xerces proporciona (parte de) una implementación de JAXP y contiene estándares endosados ​​(un estándar endosado es una API de Java definida a través de un proceso de estándares que no es el Proceso de comunidad de Java, consulte el Endorsed Standards Override Mechanism). Te enfrentarás a todo tipo de problemas si no usas el ESOM.

0

Recibí este error al usar Selenium con Glassfish. Tengo alrededor de ella copiando frascos (XML) de xerces-*, xalan-*, xml-apis*, serialize*selenium/libs/ a $AS_HOME/lib/endorsed (por Glassfish 2) o para $AS_HOME/glassfish/lib/endorsed para Glassfish 4.

+0

Tengo un problema similar. Agregué algunas cosas adicionales de Spring (POJO impulsadas por mensajes) a mi aplicación WebLogic, y ahora recibo este error. WL 10.3.4, Spring 3.0.5. (Sí, sé que Spring debería estar al menos hasta 3.2.10. Esperaba obtener el cambio antes de actualizar Spring). –

Cuestiones relacionadas