jsf - 部署时未找到 FacesServlet

标签 jsf tomcat netbeans primefaces

我有一个示例应用程序,它在我的本地计算机上使用 Netbeans 和 GlassFish。我从 StackOverflow 获得了很多帮助,以启动和运行它。下一步是尝试将其部署到真实服务器上。我发现我可以在 EATJ 上试用它,所以我使用 Netbeans 生成了一个 WAR 文件并上传了 WAR 文件。它不起作用,我在其中一个日志中发现了以下内容

INFO: ContextListener: contextDestroyed()
Jun 12, 2012 10:45:33 PM org.apache.catalina.core.ApplicationContext log
INFO: Marking servlet Faces Servlet as unavailable
Jun 12, 2012 10:45:33 PM org.apache.catalina.core.StandardContext loadOnStartup
SEVERE: Servlet /ww1 threw load() exception
java.lang.ClassNotFoundException: javax.faces.webapp.FacesServlet
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1701)

我刚刚重新启动了 Tomcat 服务器,这样我就有了一个干净的状态。从时间戳可以看出我是同步的。在 INFO 中,它告诉我它使 Faces Servlet 不可用。因此,如果它只是使其不可用,那么它找不到该类也就不足为奇了。因此,当我尝试运行我的应用程序时,它失败了。

我不明白的是为什么它一开始就决定让它不可用,以及我能做些什么。

在我本地机器上的 Netbeans 中,我使用的是 GlassFish,而在 EATJ 上使用的是 Tomcat。 WAR 文件中是否内置了某些东西,使其无法在 Tomcat 上运行?很难相信,但也许吧。我正在使用带有 primefaces 的 jsf 2.0,如果这会有所不同的话。

我从来没有在本地机器上运行过 Tomcat,因为 GlassFish 与 Netbeans 捆绑在一起并且运行良好。也许我必须在我的本地机器上加载 Tomcat 来测试它?我不知道该怎么想,所以我需要请教一些建议。

附言我记得我添加了 glassfish-web.xml 来删除烦人的警告。我添加的行是

<parameter-encoding default-charset="UTF-8"/>

也许我需要删除 glassfish-web.xml?另一方面,它与使 FacesServlet 不可用有什么关系?问题似乎比这更深。

最佳答案

Glassfish 附带捆绑的 jsf 库。汤姆猫没有。因此,您要么需要将 jsf 库放入 tomcat 库中,要么在构建项目时将它们添加到您的 war 文件中。
可以下载jsf here .

关于jsf - 部署时未找到 FacesServlet,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11009102/

相关文章:

java - 尽管使用 rs.next() 但游标状态无效

apache-flex - 使用代理克服跨域限制

linux - 无法找到 Tomcat (RHEL) 的 PID

jsf - Bean 验证不适用于 mojarra 2.2.4

css - JSF - 过滤文本框在 IE 中的出现

maven - 如何构建 WAR 文件以从 JHipster Spring Boot 项目部署到 Tomcat 上?

java - 如何从 .log 文件中删除某些列/元素?

java - 示例 "mavenproject"netbeans 7.4 的包 javafx 不存在

JSF 复合 :attribute with f:attribute conversion error

java - ace :datatable work? 中的 "first"属性如何