JSF 2.2 Hello World项目部署报404错误求助
排查JSF项目Run on Server后404错误的解决方案
嘿,刚上手JSF遇到这种404真的挺闹心的,我帮你一步步捋清楚可能的问题和解决办法:
1. 先确认项目是否正确部署
- 打开Tomcat安装目录下的
webapps文件夹,看看有没有和你项目上下文根同名的文件夹 - 进入这个项目文件夹,检查
index.xhtml是不是在根目录下(别放到WEB-INF里了,那是受保护的目录) - 回到Eclipse的Servers视图,确认你的项目已经添加到Tomcat实例中,并且Tomcat的状态是「Started」
2. 检查web.xml的关键配置
作为Hello World级的JSF项目,web.xml里至少要配置JSF核心Servlet和欢迎页,否则Tomcat找不到正确的处理入口。对照你的web.xml,看看有没有这些内容:
<!-- 欢迎页配置,确保index.xhtml在列表首位 --> <welcome-file-list> <welcome-file>index.xhtml</welcome-file> </welcome-file-list> <!-- JSF核心Servlet配置(以Mojarra为例) --> <servlet> <servlet-name>Faces Servlet</servlet-name> <servlet-class>javax.faces.webapp.FacesServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>Faces Servlet</servlet-name> <url-pattern>*.xhtml</url-pattern> </servlet-mapping>
要是缺了Faces Servlet的映射,Tomcat根本不知道该用JSF容器处理.xhtml文件,自然会返回404。
3. 验证访问路径是否正确
Eclipse右键Run on Server后打开的浏览器URL可能有问题:
- 正确的URL格式应该是:
http://localhost:8080/[你的项目上下文根]/index.xhtml - 检查项目上下文根:右键项目 → Properties → Web Project Settings,查看「Context root」的值,确保URL里的路径和这个完全一致
- 如果直接访问项目根路径(比如
http://localhost:8080/HelloJSF/),得确保web.xml里的欢迎页配置正确,Tomcat才会自动跳转到index.xhtml
4. 清理Tomcat缓存并重新部署
有时候缓存会导致部署异常,试试这步:
- 在Eclipse的Servers视图,右键你的Tomcat实例 → Clean...,清理Tomcat的工作目录
- 然后右键项目 → Run As → Run on Server,重新部署一次
5. 检查环境兼容性
- 确认Tomcat 8和Eclipse Luna的兼容性(Luna对Tomcat 8的支持没问题,但要确保Eclipse安装了JSTL/JSF相关的插件)
- 检查Tomcat安装目录的路径,别包含中文、空格或特殊字符,否则可能导致部署失败
如果以上步骤都试过还是不行,可以把你的web.xml完整内容和浏览器里的错误URL贴出来,我再帮你细化排查!
内容的提问来源于stack exchange,提问作者Geth V
相关产品推荐
相关产品推荐

