用Google搜索所有内容,但无法找到解决问题的方法。
当我尝试将项目部署到Tomcat时,我在Tomcat日志中出现了这样的错误:
SEVERE: Error configuring application listener of class com.sun.faces.config.ConfigureListener
java.lang.NoClassDefFoundError: javax/servlet/ServletRequestListener
我尝试将它从新的Netbeans 6.8部署到新的Tomcat 6.0.26,但问题仍然存在。
Servlet-api.jar位于tomcat / lib文件夹中。试图用最新的替换它,但问题仍然存在。
没有编译错误。一切都是正确的。
突然出现问题。没有代码更改,没有添加新的jar。
帮助?
UPD :WEB-INF / lib的内容:
答案 0 :(得分:3)
java.lang.NoClassDefFoundError: javax/servlet/ServletRequestListener
自Servlet 2.4 API以来,新引入了javax.servlet.ServletRequestListener
。您的环境似乎无法找到它可能是由两件事引起的:
web.xml
被声明为Servlet 2.3或更早版本,它会强制服务器进入Servlet 2.3兼容模式,或者所讨论的服务器根本不支持Servlet 2.4。
Classpath确实非常混乱。您应该从不放置/更改/删除JRE/lib
,JRE/lib/ext
或Tomcat/lib
中的库,而不了解您正在做什么。你应该从不在Webapp/WEB-INF/lib
中放置特定于appserver的库,因为这没有任何意义。
要修复1,请确保将web.xml
声明为至少Servlet 2.4。最好是服务器可以支持的最新版本。 Tomcat 6.0支持Servlet 2.5,因此相应地声明web.xml
。
要修复2,清理所有污染的类路径。投入更多时间来了解有关phenomeon“classpath”的更多信息。小心处理。
答案 1 :(得分:0)
Tomcat不附带JSF库,因此您必须将它们包含在WEB-INF / lib中。从上面的列表中可以清楚地看到,你错过了那些。对于JSF2,请转到here。
此外,您不需要WEB-INF / lib中的servlet-api,它是一个提供的库。