web-dev-qa-db-ja.com

org.xml.sax.SAXParseException:ドキュメントが無効です:文法が見つかりません。

開発マシンの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バージョン(最新のStruts 1リリースを使用)?

前もって感謝します!

12
Rui

非常によく似た何かの闘争を経験しただけです。 org.xml.sax.SAXParseExceptionも受信していました:ドキュメントが無効です:文法が見つかりません。元の開発者は、ダイジェスターのsetValidation(true)を持っていて、スキーマを使用して検証しようとしていました。検証がtrueに設定されている場合、XMLのDOCTYPE宣言にDTDが必要です。したがって、1つが見つからない場合、例外が発生します。

解決策:スキーマを使用して検証する場合、ダイジェスターで検証をtrueに設定しないでください。

以下は、ダイジェスターが使用するスキーマを定義するダイジェスターのセットアップ方法を示す適切なリンクです。もちろん、スキーマがxmlで定義されている場合は、ダイジェスターのスキーマを定義する必要はなく、検証は自動的に行われます。

http://alvinalexander.com/Java/jwarehouse/commons-digester/src/test/Java/org/Apache/commons/digester/XMLSchemaTestCase.Java.shtml

お役に立てれば...

7
user2543287

struts.xmlを確認し、以下を修正してプログラムを実行してください。

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

JPOSを実行している場合は、これらの2行をxmlファイルに追加します

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

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

0
rogerdpack