今天兴致高高的准备测试一下JSF,结果在环境搭建时,晕了一上午。
此次使用MyEclipse7.0+tomcat6.x+jdk6.0(JSF1.2)晕倒了;
以前使用MyEclipse5.0等做JSF1.0时,没有遇到该问题;
首先提示
- 严重: Error loading WebappClassLoader
- delegate: false
- repositories:
- /WEB-INF/classes/
- ----------> Parent Classloader:
- org.apache.catalina.loader.StandardClassLoader@15575e0
- javax.faces.webapp.FacesServlet
- java.lang.ClassNotFoundException: javax.faces.webapp.FacesServlet
- at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1363)
发现jsf1.2用的是jsp2.1的标准,从下表可知,运行jsf1.2需要tomcat6.x
Servlet/JSP Spec | Apache Tomcat version |
2.5/2.1 | 6.0.x |
2.4/2.0 | 5.5.x |
2.3/1.2 | 4.1.x |
2.2/1.1 | 3.3.x |
刚开始是5.5,就去换版本6.x,结果安装错误,提示服务无法注册。
经过认真核查,发现MyEclipse7.0本身提供了一个Tomcat,导致新安装(或解压的)都无法启动,非常郁闷,最后终于发现。
将对应的项目发布到MyEclipse7.0带Tomcat,结果正常运行了。。。
如果你在浏览器中输入: http://localhost:8080/JSFTest/hello.jsp会出现如下错误:
java.lang.RuntimeException: Cannot find FacesContext
解决方法:将后缀改成faces,如: http://localhost:8080/JSFTest/hello.faces