Java 为什么,在处理Web片段时,我会得到一个;“文件过早结束”;错误

Java 为什么,在处理Web片段时,我会得到一个;“文件过早结束”;错误,java,tomcat,servlet-3.0,Java,Tomcat,Servlet 3.0,我创建了两个maven项目,一个web应用程序fxserver2和一个web库SleepyFox 然后,我在SleepyFox中创建了一个src/main/resources/META-INF/web fragment.xml文件,我希望该文件自动“包含”到我的fxserver web.xml 不幸的是,我遇到了如下错误: 24-Jan-2012 19:38:50 org.apache.catalina.startup.HostConfig deployDescriptor INFO: Depl

我创建了两个maven项目,一个web应用程序fxserver2和一个web库SleepyFox

然后,我在SleepyFox中创建了一个src/main/resources/META-INF/web fragment.xml文件,我希望该文件自动“包含”到我的fxserver web.xml

不幸的是,我遇到了如下错误:

24-Jan-2012 19:38:50 org.apache.catalina.startup.HostConfig deployDescriptor
INFO: Deploying configuration descriptor fxserver2.xml from /Users/sparkyspider/Tomcat/apache-tomcat-7.0.12/conf/Catalina/localhost
24-Jan-2012 19:38:50 org.apache.tomcat.util.digester.Digester fatalError
SEVERE: Parse Fatal Error at line 1 column 1: Premature end of file.
org.xml.sax.SAXParseException: Premature end of file.
    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)
然后

24-Jan-2012 19:38:50 org.apache.catalina.startup.ContextConfig parseWebXml
SEVERE: Parse error in application web.xml file at jndi:/localhost/fxserver2/WEB-INF/lib/SleepyFox-0.9.jar!/META-INF/web-fragment.xml
org.xml.sax.SAXParseException: Premature end of file.
    at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(ErrorHandlerWrapper.java:195) 
第二个错误似乎表明确实正在读取正确的文件,但我不知道为什么它会给我一个过早的文件结束错误

我包括了我的fxserver2web.xml


30
还有我的SleepyFoxWebFragment.xml


com.foxbomb.fxserver2.ApplicationContext

非常感谢您的建议。

第一个错误使它看起来像
/Users/sparkyspider/Tomcat/apache-Tomcat-7.0.12/conf/Catalina/localhost/fxserver2.xml
或者找不到或者是空的。(第1行第1列中的“1”位让我觉得它是空的。)确保文件存在,有内容,并具有适当的访问权限,以便可以读取。

我认为您需要在主web.xml中提到web-app_3_0.xsd模式,它也会自动加载web-common_3_0.xsd。此公共架构包含会话配置>

<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
         xmlns="http://java.sun.com/xml/ns/javaee"
         xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
         http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
         version="3.0">


噢,我在Maven中使用Tomcat 7。我也遇到了同样的问题,不知怎么的,mywar.xml在/conf/Catalina/localhost/mywar.xml中是空的。因此,只需删除xml文件或重命名即可。如果您没有权限,只需重命名war文件即可。
<web-fragment>
    <listener>
        <listener-class>com.foxbomb.fxserver2.ApplicationContext</listener-class>
    </listener>
</web-fragment>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
         xmlns="http://java.sun.com/xml/ns/javaee"
         xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
         http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
         version="3.0">