web-dev-qa-db-ja.com

SAXParseException:コンテンツはプロローグでは許可されていません

Tomcatの「/ conf」ディレクトリに次のファイルを追加する必要があります。

<?xml version="1.0" encoding="UTF-8"?>
<Context useHttpOnly="false" path="/bbc">
    <Realm className="com.bbc.Tomcat.BBCSecurityRealm"/>
</Context>

このファイルを追加すると、Tomcatの起動時に次のエラーが表示されます。

ERROR ecmdefault util.digester.Digester 18:37:14,477 localhost-startStop-1 : Parse Fatal Error at line 1 column 1: Content is not allowed in prolog.
org.xml.sax.SAXParseException: Content is not allowed in prolog.
    at com.Sun.org.Apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(ErrorHandlerWrapper.Java:195)
    at com.Sun.org.Apache.xerces.internal.util.ErrorHandlerWrapper.fatalError(ErrorHandlerWrapper.Java:174)
    at com.Sun.org.Apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.Java:388)
    at com.Sun.org.Apache.xerces.internal.impl.XMLScanner.reportFatalError(XMLScanner.Java:1427)
7
Dónal

Xmlファイルの先頭(<?xml version="1.0" encoding="UTF-8"?>の前)にいくつかの非表示の文字(おそらくBOM)がありますが、これはxmlでは許可されていません。 16進エディタを使用して表示できます。それを修正する最も簡単な方法は、空のテキストファイルを作成してコンテンツをコピーし、拡張子をxmlに変更することです。

詳細については、この answer を確認してください。

から http://www.rgagnon.com/javadetails/Java-handle-utf8-file-with-bom.html

UTF8ファイルは、BOMをJavaのような他のツールに影響を与える可能性があるため、BOMを追加することは推奨されないため、特別なケースです。実際、Javaは、UTF8にBOMがないことを前提としているため、BOMが存在しても破棄されず、データとして表示されます。

13
A4L

同様の問題がありましたが、このリファレンス link は解決策を提供しました。

記事からの引用。

XMLコンテンツの開始前の任意の文字により、上記のエラーが発生します。

org.xml.sax.SAXParseException: Content is not allowed in prolog error message.
0
rslj