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

2022-09-04 02:42:31

我在我的开发机器上的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)

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

这里可能出了什么问题?缺少一些 lib?lib 版本不正确(使用最新的 Struts 1 版本)?

提前致谢!


答案 1

只是经历了非常相似的事情的挣扎。还收到了组织.xml.sax.SAXParseException:文档无效:找不到语法。原始开发人员为 Digester 设置了验证(true),然后尝试使用架构进行验证。当验证设置为 true 时,它将在 XML 的 DOCTYPE 声明中需要 DTD。因此,当找不到一个时,就会发生异常。

解决方案:使用架构进行验证时,不要在摘要器上将验证设置为 true。

下面是一个很好的链接,显示了如何设置消化器,它定义了消化器要使用的架构。当然,如果在 xml 中定义了架构,则无需为摘要器定义架构,验证将自动进行。

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

希望这有帮助...


答案 2

对于那些做的人,在文件中添加这两行JPOSxml

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