1

在使用 MyFaces 制作 Web 应用程序的某个时刻,我的 faces-config.xml 和 web.xml 开始发生冲突,但似乎在我做出任何更改之后很久。我一直在尝试不同的罐子和不同的配置,但无法正确安装任何东西。尽管我觉得我已经尝试了所有方法(解决方案除外),但这是代码的一个实例:

网页.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)

我疯了为什么这不起作用。为什么很明显,我错过了它?还是这些文件不存在问题所以我应该尝试更改我的罐子?我正在使用 JBOSS 7 进行部署。谢谢!谢谢!

4

1 回答 1

1

我根本没有使用 MyFaces 的经验,但是通过查看我在网上看到的其他一些帖子(并且因为您在初始 XML 的开头有一些空格),我会确保没有任何隐藏XML 文档中可能导致问题的字符或多余的空格。

此外,我可能会查看 faces-config.xml 的根元素中的值是否正确。具体来说,我会检查您的 xsi:schemaLocation 属性的值。我不太熟悉特定 XML 解析器的工作原理,但从您的异常情况来看,它可能正在尝试使用提供的 URL 验证架构并失败。看起来您指定了两个 URL,这可能不是有效的标记。第二个 URL 实际上确实解析为有效的 XSD 定义文件。尝试将其限制为那个 URL,看看是否有任何改变。

希望有帮助!

EDIT: Turns out I may have been misinformed. The xsi:schemaLocation element can have two values separated by a space. The second needs to be a valid schema file. I would check that they are in fact properly spaced. It looks like from your answer they may be, but it's worth a check.

于 2013-03-25T20:53:28.667 回答