【问题标题】:Problems with deploying JSF project from Netbeans to Tomcat将 JSF 项目从 Netbeans 部署到 Tomcat 的问题
【发布时间】:2011-02-06 01:37:58
【问题描述】:

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 文件夹中。尝试用最新的替换它,但问题仍然存在。

没有编译错误。一切都是正确的。

问题突然出现。没有代码更改,没有添加新的 jars。

帮助?

UPD:WEB-INF/lib 的内容:

  • hibernate3.jar
  • hibernate-testing.jar
  • quartz-1.7.2.jar
  • quartz-all-1.7.2
  • servlet-api-2.5-20081211

【问题讨论】:

  • 给出你的 WEB-INF/lib 文件夹的内容
  • 检查已更新。如果你有一些想法,为什么会这样,也许你可以给我解释一下?

标签: java tomcat jsf netbeans


【解决方案1】:

Tomcat 不附带 JSF 库,因此您必须在 WEB-INF/lib 中包含这些库。从上面的列表中可以明显看出您缺少这些。对于 JSF2,请转到 here

而且你不需要WEB-INF/lib 中的servlet-api,它是一个提供的库。

【讨论】:

  • jsf-api.jar、jsf-impl.jar 和 jsf-facelets.jar 在 tomcat_home/lib 目录中。这个 jars 也附加到项目中进行编译。 servlet-api.jar 从 web-inf/lib 中删除。问题仍然存在。
  • 好的,但是您应该从 WEB-INF/lib 中删除 servlet-api。否则你有两个具有相同类的罐子。
  • 从我的构建路径中删除了所有 servlet-api jar。问题仍然存在。 serlet-api 存在于 tomcat/lib 文件夹中。想不通,为什么会这样?昨天我可以从netbeans(启动和停止)控制tomcat,但现在我什至看不到它在服务器选项卡中的状态。我在那里看到它,但在它运行时没有状态。
  • 您可以通过将项目导出/打包到 WAR 并将其部署到没有 Netbeans 的同一个 Tomcat 来缩小问题范围。如果它有效,那么它纯粹与 Netbeans 相关,您可以通过在 Netbeans 本身中重新安装 Tomcat 服务器来解决它(添加新服务器)。祝你好运!
【解决方案2】:
java.lang.NoClassDefFoundError: javax/servlet/ServletRequestListener

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

  1. web.xml 被声明为 Servlet 2.3 或更早版本,这会强制服务器进入 Servlet 2.3 合规模式,或者相关服务器根本不支持 Servlet 2.4。

  2. Classpath 真的,真的搞砸了。在不了解自己在做什么的情况下,您应该永远JRE/libJRE/lib/extTomcat/lib 中放置/更改/删除库。您应该永远将特定于应用服务器的库放在 Webapp/WEB-INF/lib 中,因为这没有任何意义。

要修复 1,请确保您的 web.xml 至少声明为 Servlet 2.4。最好是服务器可以支持的最新版本。 Tomcat 6.0 支持 Servlet 2.5,因此请相应地声明 web.xml

要修复 2,清理所有污染的类路径。花更多时间了解更多有关现象“类路径”的信息。小心处理。

【讨论】:

  • 试图自己运行tomcat。解压后的新鲜实例,在 cmd "catalina run" 中运行。服务器已启动,但在日志中是相同的错误。我什至无法打开 Tomcat 起始页或 Tomcat 管理器。没有罐子添加到 tomcat/lib。刚开始。建议?
  • 那么说明污染在JRE/lib或者JRE/lib/ext
  • 在那里找到了一些 jsf 库。奇怪的事情。我没有把它们放在那里。已删除。 Tomcat 正在启动。谢谢s! Problem itself solved. Now i have another problem, but first of all i我自己试试。 =]
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-03
  • 2011-06-21
  • 2013-01-14
  • 2011-02-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多