2

我有一个示例应用程序,可以在我的本地机器上使用带有 GlassFish 的 Netbeans。我从 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,如果这有什么不同的话。

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

PS 我记得我添加了 glassfish-web.xml 以消除烦人的警告。我添加的行是

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

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

4

1 回答 1

8

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

于 2012-06-13T09:00:46.110 回答