失败 - 上下文路径 /Hello 处的应用程序无法启动

问题描述 投票:0回答:7

我正在尝试在 Tomcat 6.0 中部署新的 Web 应用程序,但每当我单击开始按钮时,我都会反复收到 失败 - 上下文路径/Hello 处的应用程序无法启动。每当我单击开始按钮时,其他部署的应用程序都运行良好。但为什么不是这个应用程序呢?

web-xml:

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

<servlet>
<servlet-name>j_security_check</servlet-name>
<servlet-class>EmailHander</servlet-class>
</servlet>

<login-config>
<auth-method>FORM</auth-method>
<form-login-config>
<form-login-page>/login.jsp</form-login-page>
<form-error-page>/fail_login.html</form-error-page>
</form-login-config>
</login-config>
<web-app>

这就是我在 catalina 日志文件中遇到的异常:

Jan 23, 2010 6:49:31 PM org.apache.catalina.startup.ContextConfig applicationWebConfig
SEVERE: Parse error in application web.xml file at jndi:/localhost/Hello/WEB-INF/web.xml
org.xml.sax.SAXParseException: XML document structures must start and end within the same entity.
    at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1231)
    at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:522)
    at org.apache.tomcat.util.digester.Digester.parse(Digester.java:1644)
    at org.apache.catalina.startup.ContextConfig.applicationWebConfig(ContextConfig.java:365)
    at org.apache.catalina.startup.ContextConfig.start(ContextConfig.java:1066)
    at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:261)
    at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)
    at org.apache.catalina.core.StandardContext.start(StandardContext.java:4339)
    at org.apache.catalina.manager.ManagerServlet.start(ManagerServlet.java:1249)
    at org.apache.catalina.manager.HTMLManagerServlet.start(HTMLManagerServlet.java:612)
    at org.apache.catalina.manager.HTMLManagerServlet.doGet(HTMLManagerServlet.java:136)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:525)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:849)
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:454)
    at java.lang.Thread.run(Thread.java:619)

web-xml 文件中出现该错误的原因是什么?

deployment tomcat tomcat6
7个回答
29
投票

您的

web.xml
<web-app>
结尾,但必须以
</web-app>

结尾

顺便说一句,这几乎是字面上异常告诉你的。


7
投票

您需要使用

</web-app>
关闭 XML,而不是使用
<web-app>


2
投票

EmailHandler
真的是您的 servlet 类的全名吗,即它不在像
com.something.EmailHandler
这样的包中?它必须完全符合
web.xml
的要求。


1
投票

我也遇到了同样的问题,web.xml 中的 servlet url 中缺少斜杠

更换

<servlet-mapping>
    <servlet-name>jsonservice</servlet-name>
    <url-pattern>jsonservice</url-pattern>
</servlet-mapping>

<servlet-mapping>
    <servlet-name>jsonservice</servlet-name>
    <url-pattern>/jsonservice</url-pattern>
</servlet-mapping>

0
投票

检查 web.xml 文件,也许 servletContextlistener 做得不好。 就我而言,我添加了 servletContextlistener 并让他为空并给了我同样的错误,我尝试从项目文件中删除它,但它仍在 web.xml 文件中。最后我从 web.xml 中删除它并保存文件。运行项目,显示成功


0
投票

第一个原因可能是应用程序的 web.xml 文件的结束标记,该文件无法正确关闭。

web.xml 可能以

<web-app>
结尾,但必须以
</web-app>

结尾

第二个原因在我的例子中起作用可能是你的tomcat的lib文件夹必须包含数据库的支持jar文件。

ojdbc
(对于 Oracle)或
sqljdbc
(对于 SqlServer)


0
投票

Tomcat使用的java版本必须正确。 8.5版本使用1.8 java。

© www.soinside.com 2019 - 2024. All rights reserved.