Alex Rivera | Logout

XercesImpl in conflict with JavaSE 6's internal xerces implementation. Both are needed... what can be done?

Asked 2010-06-24T13:17:46.513
11

I am sure that I am not the first to encounter this conflict.

The code that I have inherited does the following:

org.w3c.dom.Document dom; // declaration
javax.xml.validation.Schema schema; // declaration

...
...
...

javax.xml.validation.Validator validator = schema.newValidator();
validator.validate(new DOMSource(dom));

where the ... stands for seemingly unimportant/irrelevant code

Compiling and running the code with JDK 6 works (and always had...)

Recently I have had to integrate into my code another component written elsewhere in the company. That component absolutely requires the inclusion in the classpath of xercesImpl-2.8.1.jar

I absolutely require this 3rd party component, but now running the code above no longer works and I get the following:

org.xml.sax.SAXParseException: cvc-elt.1: Cannot find the declaration of element 'Root'.
 at org.apache.xerces.util.ErrorHandlerWrapper.createSAXParseException(Unknown Source)
 at org.apache.xerces.util.ErrorHandlerWrapper.error(Unknown Source)
 at org.apache.xerces.impl.XMLErrorReporter.reportError(Unknown Source)
 at org.apache.xerces.impl.XMLErrorReporter.reportError(Unknown Source)
 at org.apache.xerces.impl.XMLErrorReporter.reportError(Unknown Source)
 at org.apache.xerces.impl.xs.XMLSchemaValidator.handleStartElement(Unknown Source)
 at org.apache.xerces.impl.xs.XMLSchemaValidator.startElement(Unknown Source)
 at org.apache.xerces.jaxp.validation.DOMValidatorHelper.beginNode(Unknown Source)
 at org.apache.xerces.jaxp.validation.DOMValidatorHelper.validate(Unknown Source)
 at org.apache.xerces.jaxp.validation.DOMValidatorHelper.validate(Unknown Source)
 at org.apache.xerces.jaxp.validation.ValidatorImpl.validate(Unknown Source)
 at javax.xml.validation.Validator.validate(Validator.java:127)

As a solution, I have thought perhaps somehow to shield the xercesImpl-2.8.1.jar in a cl

Edit
Report

1 Answer

6

As per http://xml.apache.org/xalan-j/faq.html#faq-N100EF

To use a newer version of Xalan-Java and override the one packaged with the JDK:

use the Endorsed Standards Override Mechanism. Place the xalan.jar, serializer.jar, xercesImpl.jar and xml-apis.jar in the \lib\endorsed directory of the JRE, where is where the runtime software is installed

answered 2010-06-24T17:57:52.883

Your Answer