Tomcat技术求助:无法访问默认页面及JSF应用users.xhtml
解决Tomcat在Eclipse Run on Server模式下的404问题
看起来你遇到的问题是Eclipse托管启动Tomcat时无法访问默认页和JSF页面,但手动用startup.bat启动一切正常——这个差异说明问题大概率出在Eclipse对Tomcat的配置或者项目部署环节,咱们一步步来排查:
1. 检查Eclipse中Tomcat的服务器部署位置配置
这是最常见的原因,Eclipse默认会把Tomcat的部署目录指向工作空间的临时文件夹,而不是Tomcat安装目录的webapps:
- 打开Eclipse的「Servers」视图,找到你的Tomcat服务器,右键选择「Open」
- 在弹出的配置页面中,找到「Server Locations」部分:
- 如果当前选的是「Use workspace metadata」(默认选项),试试切换到「Use Tomcat installation (takes control of Tomcat installation)」
- 注意:切换前要先移除所有已部署的项目(右键Tomcat→Add and Remove→把所有项目移到左侧),保存配置后再重新添加部署你的JSF项目
- 切换后,Eclipse会直接使用Tomcat安装目录下的
webapps文件夹,和你手动启动startup.bat的环境一致,这样默认页和项目访问路径就统一了
2. 验证项目的部署状态与上下文路径
有时候项目没正确部署,或者访问路径错了:
- 右键Tomcat→「Add and Remove」,确认你的JSF项目已经在「Configured」列表中
- 启动服务器后,看「Servers」视图里的项目状态是否显示「[Started]」
- 检查项目的上下文路径:右键项目→「Properties」→「Web Project Settings」,查看「Context root」的值。比如如果是
myjsfapp,那访问users.xhtml的正确URL应该是http://localhost:8080/myjsfapp/users.xhtml,而不是直接访问users.xhtml - 另外,Tomcat默认页打不开的话,切换到「Use Tomcat installation」后,Tomcat自带的ROOT项目会被部署,就能正常访问
http://localhost:8080了
3. 排查端口冲突问题
Eclipse托管的Tomcat可能端口被占用,或者配置的端口和你手动启动的不一致:
- 双击「Servers」视图里的Tomcat,找到「Ports」部分,确认HTTP/1.1的端口是
8080(和你手动启动的一致) - 打开命令提示符,执行
netstat -ano | findstr :8080,检查端口是否被其他程序占用。如果被占用,要么关掉占用程序,要么修改Tomcat的端口(在Ports配置里改)
4. 清理项目与Tomcat缓存
有时候构建缓存会导致部署文件不完整:
- 右键你的JSF项目→「Clean」,然后选择「Clean projects selected below」,确认后执行
- 如果是Maven项目,右键项目→「Run As」→「Maven Clean」,再执行「Maven Install」重新构建
- 清理Tomcat缓存:右键Tomcat→「Clean」,选择「Clean all server content」,然后重新部署项目
5. 重置Eclipse的Tomcat临时目录
如果上面的方法都没用,可能是Eclipse的Tomcat插件缓存出问题了:
- 关闭Eclipse
- 找到你的Eclipse工作空间目录,进入
.metadata\plugins\org.eclipse.wst.server.core - 删除里面的
tmp0、tmp1等临时文件夹(建议先备份) - 重新打开Eclipse,重新添加Tomcat服务器,再部署你的JSF项目
按照上面的步骤排查,应该能解决你的问题。
内容的提问来源于stack exchange,提问作者pawel pajura
相关产品推荐
相关产品推荐

