2012-04-26 606 views
10

我得到的错误在我的Struts应用程序,我的开发机上,说我明显的配置文件存在错误(我已经检查,似乎OK):org.xml.sax.SAXParseException:文档无效:找不到语法。

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". 

显然,开发机器上的应用程序管理跑步。但是,部署服务器上,我得到以下错误,我不知道是否可能涉及:

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) 

我的struts-config.xml文件:http://pastebin.com/i0XanZZt 我的web.xml文件:http://pastebin.com/jMPAdSUm

这里可能有什么错误?有些库丢失?不正确的lib版本(使用最新的Struts 1版本)?

在此先感谢!

+0

你可以删除文档类型并测试吗? – bluesman 2012-04-26 19:39:59

+0

嗨,我已经测试过,并且出现了相同的错误:S – Rui 2012-04-26 20:56:45

+0

FWIW,我最近在我正在开发的应用程序中引入类似于前两个错误的错误。然而,一切看起来都很好,所以我认为这是一个警告,而不是一个错误。 (尽管如此,解决引起警告的任何问题都是很好的,我仍然在使用这个问题。)列出的第三个错误与我无关,我很确定。 – apollodude217 2012-12-18 15:13:08

回答

6

刚刚经历了非常相似的事情的斗争。还收到org.xml.sax.SAXParseException:文档无效:找不到语法。原始开发者为Digester设置了验证(true),然后尝试使用模式进行验证。当验证设置为true时,它需要在XML的DOCTYPE声明中使用DTD。所以当找不到时会发生异常。

解决方案:在使用模式进行验证时,请勿在Digester上将验证设置为true。

下面是一个很好的链接,它显示了如何设置Digester,它定义了Digester使用的模式。当然,如果模式是在xml中定义的,那么就不需要为Digester定义一个模式,并且验证会自动发生。

​​

希望这有助于...

1

只要检查struts.xml,更正以下和运行程序。

<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN" "http://struts.apache.org/dtds/struts-2.3.dtd"> 
0

对于那些谁做JPOS,在xml文件

<?xml version="1.0" encoding="UTF-8" standalone="no"?> 
<!DOCTYPE isopackager SYSTEM "genericpackager.dtd"> 
0

得到这个尝试使用SAX做XSD验证添加以下两行:

Caused by: org.xml.sax.SAXParseException; lineNumber: 2; columnNumber: 30; Document is invalid: no grammar found. 
    at org.apache.xerces.util.ErrorHandlerWrapper.createSAXParseException(Unknown Source) 

修复似乎是添加此:

saxParser.setProperty(JAXP_SCHEMA_LANGUAGE, W3C_XML_SCHEMA); 

ref:https://docs.oracle.com/javase/tutorial/jaxp/sax/validation.html