从Netbeans到Tomcat部署JSF项目的问题

时间:2010-04-09 09:23:38

标签: java tomcat jsf netbeans

用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的内容:

  • hibernate3.jar
  • 冬眠-testing.jar
  • quartz-1.7.2.jar
  • 石英全1.7.2
  • servlet的API-2.5-20081211

2 个答案:

答案 0 :(得分:3)

java.lang.NoClassDefFoundError: javax/servlet/ServletRequestListener

自Servlet 2.4 API以来,新引入了javax.servlet.ServletRequestListener。您的环境似乎无法找到它可能是由两件事引起的:

  1. web.xml被声明为Servlet 2.3或更早版本,它会强制服务器进入Servlet 2.3兼容模式,或者所讨论的服务器根本不支持Servlet 2.4。

  2. Classpath确实非常混乱。您应该从不放置/更改/删除JRE/libJRE/lib/extTomcat/lib中的库,而不了解您正在做什么。你应该从不Webapp/WEB-INF/lib中放置特定于appserver的库,因为这没有任何意义。

  3. 要修复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,它是一个提供的库。