2013-01-24 27 views
0

通過獲取此錯誤,我陷入困境?我有一個簡單的XML文件和一個簡單的java文件。Tomcat錯誤:在根元素之後的文檔中的標記必須是格式良好的

我的xml:

<web-app xmlns="http://java.sun.com/xml/ns/javaee"> 
<servlet> 
    <servlet-name>hello</servlet-name> 
    <servlet-class>test.HelloServlet</servlet-class> 
</servlet> 
<servlet-mapping> 
    <servlet-name>hello</servlet-name> 
    <url-pattern>/hello/</url-pattern> 
</servlet-mapping> 
</web-app> 

和我的Java是:

package test; 
import java.io.*; 
import javax.servlet.http.*; 
import javax.servlet.*; 

public class HelloServlet extends HttpServlet { 

public void doGet (HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { 
PrintWriter out = res.getWriter(); 
out.println("Hello, world!"); 
out.close(); 
} 
} 

我的XML被放置在WEB-INF中。 當我做localhost:8080時,我得到了tomcat頁面。

有人可以幫助我嗎?

Jan 24, 2013 3:48:58 PM org.apache.catalina.startup.ContextConfig parseWebXml 
SEVERE: Parse error in application web.xml file at jndi:/localhost/opdracht-les1/WEB-INF/web.xml 
org.xml.sax.SAXParseException; systemId: jndi:/localhost/opdracht-les1/WEB-INF/web.xml; lineNumber: 5; columnNumber: 2; The markup in the document following the root element must be well-formed. 
    at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(Unknown Source) 
    at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.fatalError(Unknown Source) 
    at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(Unknown Source) 
    at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(Unknown Source) 
    at com.sun.org.apache.xerces.internal.impl.XMLScanner.reportFatalError(Unknown Source) 
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$TrailingMiscDriver.next(Unknown Source) 
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(Unknown Source) 
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source) 
    at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source) 
    at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source) 
    at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(Unknown Source) 
    at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(Unknown Source) 
    at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(Unknown Source) 
    at org.apache.tomcat.util.digester.Digester.parse(Digester.java:1537) 
    at org.apache.catalina.startup.ContextConfig.parseWebXml(ContextConfig.java:1878) 
    at org.apache.catalina.startup.ContextConfig.webConfig(ContextConfig.java:1259) 
    at org.apache.catalina.startup.ContextConfig.configureStart(ContextConfig.java:878) 
    at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:369) 
    at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119) 
    at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:90) 
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5173) 
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) 
    at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:901) 
    at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:877) 
    at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:633) 
    at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:977) 
    at org.apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.java:1655) 
    at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) 
    at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source) 
    at java.util.concurrent.FutureTask.run(Unknown Source) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) 
    at java.lang.Thread.run(Unknown Source) 

Jan 24, 2013 3:48:58 PM org.apache.catalina.startup.ContextConfig parseWebXml 
SEVERE: Occurred at line 5 column 2 
Jan 24, 2013 3:48:58 PM org.apache.catalina.startup.ContextConfig configureStart 
SEVERE: Marking this application unavailable due to previous error(s) 
Jan 24, 2013 3:48:58 PM org.apache.catalina.core.StandardContext startInternal 
SEVERE: Error getConfigured 
Jan 24, 2013 3:48:58 PM org.apache.catalina.core.StandardContext startInternal 
SEVERE: Context [/opdracht-les1] startup failed due to previous errors 
Jan 24, 2013 3:53:09 PM org.apache.catalina.startup.HostConfig deleteRedeployResources 
INFO: Undeploying context [/opdracht-les1] 
Jan 24, 2013 3:53:29 PM org.apache.catalina.startup.HostConfig deployWAR 
INFO: Deploying web application archive E:\Program Files\Apache Software Foundation\Tomcat 7.0\webapps\opdracht-les1.war 
+1

聽起來像是你的XML文件*不*很爲你的貼吧 - 編碼的問題,也許? –

+0

它完全像我發佈它。 – Sevo

+0

另外,我會建議在文檔的開頭用'<?xml version =「1.0」encoding =「YOUR_ENCODING_HERE」?>'明確說明文檔編碼。 – SkyDan

回答

0

的部署描述符的Java Servlet的需要多一點的命名空間聲明:

<web-app version="3.0" 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_3_0.xsd"> 
+0

雖然沒有聲明名稱空間前綴是一個真正的問題,應該被修正,它不會是*根文件中的標記在根元素之後的標記在大多數XML解析器中必須是格式正確的錯誤消息*。 – kjhughes

相關問題