Starting Tomcat Server at localhost failed
学习配置servlet过程中竟然能碰到服务器起不来的。
-
现在eclipse越来越智能,新建一个servlet点击Finish,eclipse会自动帮我们生成好一些代码。帮我们节省了不少时间。
-
2
但问题就出现在eclipse自动帮我们生成好的代码中。注意一下这个注释。
-
3
这个注解是eclipse帮我们生成好的,而问题恰恰就出在这。我们知道,每次我们新建一个servlet后会在web.xml文件中配置映射关系,这样才能在浏览器敲入一个地址后,地址发来的请求能让服务器接收到请求并将该请求交给指定的Servlet去处理。
-
4
所以导致服务器起不来的原因就是配置和自动生成的注解冲突了。会产生如下错误。
-
5
解决的办法就是:删除web.xml中的映射,或者将自动生成的注解删除掉,这样就不会有冲突了,二者选其一留下即可。再启动服务器就能正常成功启动了。
-
还有搜索的一些其人的经验:==================================================
-
1、把你工作空间按照如下的文件路径打开:
<workspace>\.metadata\.plugins\org.eclipse.wst.server.core
删除里面的temp文件夹,删除后重启eclipse,tomcat就可以用了。
2、把你工作空间按照如下的文件路径打开:
<workspace>\.metadata\.plugins\org.eclipse.core.resources
删除 .snap 文件,(我在使用eclipse下有这个.snap文件)。
3、在server视图窗口中,把tomcat删除。然后再重新添加tomcat 再添加你的Web项目并启动。
4、打开任务管理器,找到javax.exe,右键结束进程,重启eclipse。
5、检查web.xml中的servlet映射里面的<url-pattern>,看<url-pattern></url-pattern>中配置的内容是否缺少“/” ,"/"表示当前web应用。这个问题也可能是由过滤器引起的。
6、不同的servlet使用了相同的@WebServlet标注。在Servlet上设置@WebServlet标注,容器就会自动读取当中的信息。
举个例子:
@WebServlet("/DownLoadDemo2")
public class DownLoadDemo2 extends HttpServlet{当用户请求的URL是"/DownLoadDemo2",则由DownLoadDemo2的实例提供服务。
注:@WebServlet("/DownLoadDemo2")这种方式称为注解,省去在web.xml中进行配置。
例如:
<servlet>
<!-- 声明Servlet对象 -->
<servlet-name>RequestDemo1</servlet-name>
<!-- 上面一句指定Servlet对象的名称 -->
<servlet-class>com.jd.request.RequestDemo1</servlet-class>
<!-- 上面一句指定Servlet对象的完整位置,包含包名和类名 -->
</servlet>
<servlet-mapping>
<!-- 映射Servlet -->
<servlet-name>RequestDemo1</servlet-name>
<!--<servlet-name>与上面<Servlet>标签的<servlet-name>元素相对应,不可以随便起名 -->
<url-pattern>/RequestDemo1</url-pattern>
<!-- 上面一句话用于映射访问URL -->
</servlet-mapping>