【问题标题】:Tomcat error: The markup in the document following the root element must be well-formedTomcat错误:根元素后面的文档中的标记必须格式正确
【发布时间】:2013-01-24 23:23:55
【问题描述】:

我被这个错误困住了?!我有一个简单的 XML 文件和一个简单的 java 文件。

我的 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

【问题讨论】:

  • 听起来您的 XML 文件 不是 与您发布的完全一样 - 可能是编码问题?
  • 和我发的一模一样。
  • 另外,我建议在文档开头使用&lt;?xml version="1.0" encoding="YOUR_ENCODING_HERE"?&gt; 明确说明文档编码。
  • 好的,我按照 SkyDan 所说的做了Web 应用程序存档 E:\Program Files\Apache Software Foundation\Tomcat 7.0\webapps\opdracht-les1.war 当我打开浏览器时,它显示: type Exception report message Error instantiating servlet class test.HelloServlet description 服务器遇到内部错误阻止它完成这个请求。刷新后:输入状态报告消息描述请求的资源不可用。
  • @Sevo 这是一个不同的问题,编辑您的问题或打开一个新问题,但如果您在 cmets 中提供“更新”,您可能不会收到答案...

标签: java xml tomcat


【解决方案1】:

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">  

【讨论】:

  • 虽然没有声明命名空间前缀是一个应该纠正的真正问题,但它不会导致 文档中根元素之后的标记必须是格式良好的错误消息 在大多数 XML 解析器中。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-03
相关资源
最近更新 更多