我的开发机器上的Struts应用程序中出现错误,显然我的配置文件有错误(我已经检查过并且看起来没问题):
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丢失了? lib版本不正确(使用最新的Struts 1版本)?
提前致谢!
答案 0 :(得分:7)
刚刚经历了非常相似的挣扎。还收到了org.xml.sax.SAXParseException:文档无效:找不到语法。原始开发人员为Digester设置了setValidation(true),然后尝试使用模式进行验证。当验证设置为true时,它需要XML的DOCTYPE声明中的DTD。因此,当找不到异常时,就会发生异常。
解决方案:在使用模式进行验证时,不要在Digester上将验证设置为true。
下面是一个很好的链接,它显示了如何设置Digester,它定义了Digester使用的模式。当然,如果在xml中定义了schema,那么就不需要为Digester定义模式,并且验证将自动进行。
希望这会有所帮助......
答案 1 :(得分:1)
只需检查struts.xml
,更正以下内容并运行您的程序。
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN" "http://struts.apache.org/dtds/struts-2.3.dtd">
答案 2 :(得分:0)
对于执行JPOS
的人,请在xml
文件
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE isopackager SYSTEM "genericpackager.dtd">
答案 3 :(得分: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);
参考:https://docs.oracle.com/javase/tutorial/jaxp/sax/validation.html