1

MyFaces を使用して Web アプリケーションを作成しているある時点で、faces-config.xml と web.xml が競合し始めましたが、変更を加えてからかなり時間がたっているように見えました。私は両方の異なるjarと異なる構成を試してきましたが、何も正しくインストールできません。(ソリューションを除く) すべてを試したような気がしますが、コードの 1 つのインスタンスを次に示します。

web.xml:

    <?xml version="1.0" encoding="UTF-8"> 
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<session-config>
    <session-timeout>
        30
    </session-timeout>
</session-config>
<welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
</welcome-file-list>

faces-config.xml のイントロ:

<?xml version="1.0" encoding="UTF-8"?>
<faces-config
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd"
version="2.0">

そして、私はこのエラーを受け取っています:

SEVERE [org.apache.commons.digester.Digester] (MSC service thread 1-2) Parse Error at line 2 column 14: 
Document is invalid: no grammar found.: org.xml.sax.SAXParseException: Document is invalid: no grammar found.
at org.apache.xerces.util.ErrorHandlerWrapper.createSAXParseException(ErrorHandlerWrapper.java:196)
at org.apache.xerces.util.ErrorHandlerWrapper.error(ErrorHandlerWrapper.java:132)
at org.apache.xerces.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:390)
at org.apache.xerces.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:322)
at org.apache.xerces.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:281)
at org.apache.xerces.impl.XMLNSDocumentScannerImpl.scanStartElement(XMLNSDocumentScannerImpl.java:136)
at org.apache.xerces.impl.XMLNSDocumentScannerImpl$NSContentDispatcher.scanRootElementHook(XMLNSDocumentScannerImpl.java:733)
at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(XMLDocumentFragmentScannerImpl.java:1754)
at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:324)
at org.apache.xerces.parsers.XML11Configuration.parse(XML11Configuration.java:845)
at org.apache.xerces.parsers.XML11Configuration.parse(XML11Configuration.java:768)
at org.apache.xerces.parsers.XMLParser.parse(XMLParser.java:108)
at org.apache.xerces.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1196)
at org.apache.xerces.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:555)
at org.apache.commons.digester.Digester.parse(Digester.java:1745) [commons-digester-1.8.jar:]
at org.apache.myfaces.config.impl.digester.DigesterFacesConfigUnmarshallerImpl.getFacesConfig(DigesterFacesConfigUnmarshallerImpl.java:197) [myfaces-impl-1.1.8.jar:]

また:

    SEVERE [org.apache.commons.digester.Digester] (MSC service thread 1-2) Parse Error at line 2 column 14: 
Document root element "faces-config", must match DOCTYPE root "null".: org.xml.sax.SAXParseException: Document root element "faces-config", must match DOCTYPE root "null".
at org.apache.xerces.util.ErrorHandlerWrapper.createSAXParseException(ErrorHandlerWrapper.java:196)

なぜこれが機能しないのか、私は夢中になっています。理由は明らかで、見逃していますか?それとも、これらのファイルに問題がないので、jar を変更してみてください。JBOSS 7 でデプロイしています。ありがとうございます。ありがとうございました!

4

1 に答える 1

1

私は MyFaces の経験はまったくありませんが、オンラインで見た他の投稿のいくつかを調べて (また、最初の XML の先頭に空白があるため)、隠されたものがないことを確認します。問題を引き起こす可能性のある XML ドキュメント内の文字または余分な空白。

さらに、faces-config.xml のルート要素の値が正しいかどうかを確認します。具体的には、xsi:schemaLocation 属性の値を確認します。その特定の XML パーサーがどのように機能するかについてはあまり詳しくありませんが、例外から判断すると、提供された URL を使用してスキーマを検証しようとして失敗している可能性があります。2 つの URL が指定されているようですが、有効なマークアップではない可能性があります。2 番目の URL は、実際には有効な XSD 定義ファイルに解決されます。その 1 つの URL に制限してみて、何かが変わるかどうかを確認してください。

それが役立つことを願っています!

編集: 誤解されている可能性があります。xsi:schemaLocation 要素は、スペースで区切られた 2 つの値を持つことができます。2 番目は有効なスキーマ ファイルである必要があります。実際に適切な間隔で配置されていることを確認します。あなたの答えからはそうかもしれませんが、チェックする価値はあります。

于 2013-03-25T20:53:28.667 に答える