我有一个示例应用程序,可以使用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上运行?很难相信,但也许。我正在使用jsf 2.0和primefaces,如果这应该有所不同。
我从未在本地计算机上运行Tomcat,因为GlassFish与Netbeans捆绑在一起并且工作得很好。也许我必须在我的本地机器上加载Tomcat来测试它?我不知道该怎么想,所以我需要提一些建议。
P.S。我记得我添加了glassfish-web.xml来删除恼人的警告。我添加的行是
<parameter-encoding default-charset="UTF-8"/>
也许我需要删除glassfish-web.xml?另一方面,它与FacesServlet不可用有什么关系?问题似乎比那更深。
答案 0 :(得分:8)
Glassfish附带了捆绑的jsf库。 Tomcat没有。因此,您需要将jsf库放到tomcat库中,或者在构建项目时将它们添加到war文件中 您可以下载jsf here。