Jsf 部署时未找到FacesServlet

Jsf 部署时未找到FacesServlet,jsf,tomcat,netbeans,primefaces,Jsf,Tomcat,Netbeans,Primefaces,我有一个示例应用程序,它在本地机器上使用Netbeans和GlassFish。我从StackOverflow那里得到了很多帮助,帮助我启动并运行它。下一步是尝试在真正的服务器上部署它。我发现我可以在EATJ上试用它,所以我使用Netbeans生成了一个WAR文件,并上传了WAR文件。它不工作,我在其中一个日志中发现了以下内容 INFO: ContextListener: contextDestroyed() Jun 12, 2012 10:45:33 PM org.apache.catalina

我有一个示例应用程序,它在本地机器上使用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服务器,这样我就可以一清二楚了。我可以从时间戳看出我是同步的。在信息中,它告诉我它正在使FacesServlet不可用。因此,如果它只是让类不可用,那么它找不到类也就不足为奇了。因此,当我尝试运行我的应用程序时,它失败了

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

在本地机器上的Netbeans中,我使用的是GlassFish,在EATJ上使用的是Tomcat。WAR文件中是否内置了一些东西,使其无法在Tomcat上运行?很难相信,但也许。我正在使用JSF2.0和primefaces,如果这有什么不同的话

自从GlassFish与Netbeans捆绑销售以来,我从未在我的本地机器上运行过Tomcat,它运行得很好。也许我必须在本地机器上加载Tomcat来测试它?我不知道该怎么想,所以我需要一些建议

另外,我记得我添加了glassfish-web.xml来删除一个恼人的警告。我加的那句话是

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


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

Glassfish附带了捆绑的jsf库。Tomcat没有。因此,在构建项目时,您需要将jsf库放到tomcat库中,或者将它们添加到war文件中。

您可以下载jsf。

这就是我所说的非常好的答案。我想在回答之前检查一下,结果它成功了!我的网站已启动并运行。我采取了将jsf添加到war文件的方法,它解决了这个问题。