2012-04-26 137 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