org.xml.sax.SAXParseException: Document is invalid: no grammar found.

Rui picture Rui · Apr 26, 2012 · Viewed 25.9k times · Source

I'm getting the errors in my Struts application, on my development machine, saying apparently my config files have errors (which I already checked and seem ok):

org.apache.commons.digester.Digester error
    SEVERE: Parse Error at line 3 column 15: Document is invalid: no grammar found.
    org.xml.sax.SAXParseException: Document is invalid: no grammar found.


org.apache.commons.digester.Digester error
    SEVERE: Parse Error at line 3 column 15: Document root element "struts-config", must match DOCTYPE root "null".
    org.xml.sax.SAXParseException: Document root element "struts-config", must match DOCTYPE root "null".

Apparently, on development machine the application manages to run. However, on the deploy server I get the following errors, which I don't know if might be related:

    org.apache.struts.action.ActionServlet handleConfigException 
SEVERE: Parsing error processing resource path /WEB-INF/struts-config.xml java.net.ConnectException: Connection refused at java.net.PlainSocketImpl.socketConnect(Native Method) at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:351) at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:213)

My struts-config.xml file: http://pastebin.com/i0XanZZt My web.xml file: http://pastebin.com/jMPAdSUm

What can possibly be wrong here? Some lib missing? Incorrect lib versions (using latest Struts 1 release)?

Thanks in advance!

Answer

user2543287 picture user2543287 · Jul 2, 2013

Just went through the struggles of something very similar. Was also receiving the org.xml.sax.SAXParseException: Document is invalid: no grammar found. Original developer had setValidation(true) for the Digester and then was trying to validate using a schema. When validation is set to true it expects a DTD in the DOCTYPE declaration of the XML. So when one is not found the Exception occurs.

Solution: DO NOT set validation to true on the Digester when validating using a schema.

Below is good link that shows how to set up the Digester where it defines schema for the Digester to use. Of course if schema is defined in the xml then there is no need to define a schema for the Digester and validation will occur automatically.

http://alvinalexander.com/java/jwarehouse/commons-digester/src/test/java/org/apache/commons/digester/XMLSchemaTestCase.java.shtml

Hope this helps...