2012-06-13 36 views
2

我有一個示例應用程序,它在使用Netbeans和GlassFish的本地機器上運行。我從StackOverflow獲得了很多幫助並使其運行。下一步是嘗試將它部署在真實的服務器上。我發現我可以在EATJ上試試它,所以我使用Netbeans來生成一個WAR文件,並且我上傳了WAR文件。它不起作用,我發現其中一個日誌在部署中找不到FacesServlet

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,如果這應該有所作爲。

因爲GlassFish與Netbeans捆綁在一起,所以我從未在本地計算機上運行Tomcat,它工作得很好。也許我必須在我的本地機器上加載Tomcat來測試它?我不知道該怎麼想,所以我需要問一些建議。

P.S.我記得我添加了glassfish-web.xml來刪除惱人的警告。我添加的行是

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

也許我需要刪除glassfish-web.xml?另一方面,它與使FacesServlet不可用有什麼關係?問題似乎比這更深。

回答

8

Glassfish帶有捆綁的jsf庫。 Tomcat沒有。因此,您需要將jsf庫放到tomcat庫中,或者在生成項目時將它們添加到war文件中。
您可以下載jsf here

+0

這就是我所說的一個非常好的答案。我想在回答之前檢查它,它的工作原理!我的網站正在運行。我採取了將jsf添加到我的war文件的方法,並解決了這個問題。 –

相關問題