Eclipse部署Tomcat应用异常:Tomcat主页可访问但应用报404
我之前也碰到过完全一样的情况,Tomcat主页能正常访问,但自己的应用就是404,给你几个实用的排查步骤:
确认应用实际部署到了Tomcat的webapps目录
因为你已经设置用Tomcat安装目录而非工作区元数据,直接去Tomcat安装路径下的webapps文件夹看看,有没有tutorial-web-spring这个子目录,里面是否包含WEB-INF文件夹以及编译后的class文件、配置文件。如果这个目录不存在,说明Eclipse根本没把应用部署过去,得检查部署配置。核对Eclipse的服务器部署路径设置
右键Eclipse里的Tomcat服务器→Properties→Server Locations,确认已经选中Use Tomcat installation (takes control of Tomcat installation),并且下方的Deploy path是webapps(这是Tomcat默认的部署目录,要是改成别的就会找不到应用)。检查应用的上下文路径是否匹配
右键你的tutorial-web-spring项目→Properties→Web Project Settings,查看Context root的值是不是tutorial-web-spring。如果这里设置的是别的名字,那访问路径就得改成对应的,比如如果是demo,就得访问localhost:8080/demo。查看Tomcat日志找部署失败原因
去Tomcat安装目录的logs文件夹,重点看localhost.log、catalina.out这两个日志文件,里面会记录应用部署时的错误——比如Spring配置文件语法错误、依赖缺失、类加载失败等,这些问题都会导致应用看似添加成功,但实际没正常启动,自然访问不了。检查应用在服务器中的启动状态
在Eclipse的服务器标签页里展开你的Tomcat服务器,看看tutorial-web-spring前面的图标:如果是绿色对勾,说明启动正常;如果是灰色或者红色叉号,说明启动失败,去Eclipse的Problems视图里找具体的错误提示。清理缓存后重新部署
有时候缓存会搞事情,试试这几步:右键服务器→Clean,然后右键项目→Run As→Clean,接着重启Tomcat服务器,再重新部署一次应用。检查Spring应用的Servlet映射配置
如果是Spring MVC应用,还要确认web.xml里的DispatcherServlet映射是否正确,或者注解配置的@RequestMapping路径有没有问题。比如DispatcherServlet如果只映射了*.do,那访问根路径就会404,得确保映射覆盖到你要访问的路径。
内容的提问来源于stack exchange,提问作者Q. Ber

