使用MyFaces 2.3替代Mojarra启动Tomcat时遇404错误求助
排查MyFaces 2.3 + Tomcat启动后404错误的步骤
嘿,刚上手JSF 2.3和MyFaces是吧?遇到Tomcat跑项目时出404确实挺闹心的,我帮你梳理几个关键排查点,一步步来解决:
1. 补全并检查web.xml的核心配置
你贴的web.xml内容被截断了,这大概率是问题根源之一。JSF必须通过FacesServlet来处理请求,所以你的web.xml里必须包含这个核心配置。给你一个标准的基础配置示例:
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd" version="4.0"> <!-- 配置JSF核心Servlet --> <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> <!-- 所有xhtml请求都交给JSF处理 --> </servlet-mapping> <!-- 开发阶段参数,方便调试 --> <context-param> <param-name>javax.faces.PROJECT_STAGE</param-name> <param-value>Development</param-value> </context-param> </web-app>
重点提醒:你的访问URL必须匹配这个url-pattern,比如要访问index.xhtml,不能直接输index.jsp或者不带后缀的路径。
2. 确认MyFaces jar包的部署位置
- 确保
myfaces-api-2.3.0.jar和myfaces-impl-2.3.0.jar放在项目的WEB-INF/lib目录下,不要放到Tomcat的全局lib文件夹里,否则会引发类加载冲突。 - 在Eclipse中,右键项目 →
Properties→Deployment Assembly,检查这两个jar包是否已经被添加到部署列表中,否则Tomcat部署时不会把它们打包进去。
3. 核对访问URL的正确性
- 先确认Tomcat中项目的上下文路径:Eclipse的
Servers视图里,右键你的Tomcat服务器 →Add and Remove,选中你的项目后,右侧会显示上下文路径(比如/my-jsf-project)。 - 访问URL应该是
http://localhost:8080/[上下文路径]/[你的xhtml页面],比如http://localhost:8080/my-jsf-project/index.xhtml,别直接访问根路径http://localhost:8080。 - 还要确认你的项目里确实存在对应的xhtml页面,比如
index.xhtml要放在WebContent(非Maven项目)或src/main/webapp(Maven项目)目录下。
4. 查看Tomcat启动日志找线索
404有时候是表面现象,背后可能有初始化失败的问题。打开Tomcat的logs/catalina.out或者Eclipse的Console视图,看看有没有报错信息:
- 比如
ClassNotFoundException:说明jar包没部署到位,或者版本不对。 - 比如
FacesServlet初始化失败:可能是web.xml配置有误,或者MyFaces版本和Tomcat不兼容。
5. 确认Tomcat版本兼容性
JSF 2.3需要Servlet 4.0的支持,所以你的Tomcat版本必须是9.0及以上(Tomcat 9支持Servlet 4.0,Tomcat 8.5只支持Servlet 3.1,会出现兼容性问题)。如果用的是Tomcat 7或更早版本,直接换Tomcat 9吧。
内容的提问来源于stack exchange,提问作者the programer
相关产品推荐
相关产品推荐

