2013-08-03 12 views
6

Próbuję prosty app Witam świecie w JSF, ale w oparciu o wyjątek rzucany przez tomcat na początku widzę, że FacesServlet nie jest inicjowany. Mam wymagane pliki jarmyfaces-api, bundle, impl i commut beanutils, kodek, kolekcje, digester, logowanie. Poza tym przeczytałem w innym pytaniu na SO, że potrzebowałbym również jsf-api.jar and jsf-impl.jar, który również umieściłem w WEB-INF/lib i dodałem do ścieżki budowyNie można zainicjować FacesServlet w Tomcat 7 - ClassNotFoundException

Nadal nie ma szczęścia. Zajmuję się na Ubuntu przy użyciu Eclipse i Tomcat 7

Oto moja web.xml

<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0"> 
    <display-name>Doom</display-name> 
    <display-name>JavaServerFaces</display-name> 

    <!-- Change to "Production" when you are ready to deploy --> 
    <context-param> 
     <param-name>javax.faces.PROJECT_STAGE</param-name> 
     <param-value>Development</param-value> 
    </context-param> 

    <!-- Welcome page --> 
    <welcome-file-list> 
     <welcome-file>faces/welcome.xhtml</welcome-file> 
    </welcome-file-list> 

    <!-- JSF mapping --> 
    <servlet> 
     <servlet-name>Faces Servlet</servlet-name> 
     <servlet-class>javax.faces.webapp.FacesServlet</servlet-class> 
     <load-on-startup>1</load-on-startup> 
    </servlet> 

    <!-- Map these files with JSF --> 
    <servlet-mapping> 
     <servlet-name>Faces Servlet</servlet-name> 
     <url-pattern>/faces/*</url-pattern> 
    </servlet-mapping> 
    <servlet-mapping> 
     <servlet-name>Faces Servlet</servlet-name> 
     <url-pattern>*.jsf</url-pattern> 
    </servlet-mapping> 
    <servlet-mapping> 
     <servlet-name>Faces Servlet</servlet-name> 
     <url-pattern>*.faces</url-pattern> 
    </servlet-mapping> 
    <servlet-mapping> 
     <servlet-name>Faces Servlet</servlet-name> 
     <url-pattern>*.xhtml</url-pattern> 
    </servlet-mapping> 
</web-app> 

Jest to wyjątek

java.lang.ClassNotFoundException: javax.faces.webapp.FacesServlet 
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1676) 
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1521) 
    at org.apache.catalina.core.DefaultInstanceManager.loadClass(DefaultInstanceManager.java:415) 
    at org.apache.catalina.core.DefaultInstanceManager.loadClassMaybePrivileged(DefaultInstanceManager.java:397) 
    at org.apache.catalina.core.DefaultInstanceManager.newInstance(DefaultInstanceManager.java:118) 
    at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1062) 
    at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:1010) 
    at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4935) 
    at org.apache.catalina.core.StandardContext$3.call(StandardContext.java:5262) 
    at org.apache.catalina.core.StandardContext$3.call(StandardContext.java:5257) 
    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334) 
    at java.util.concurrent.FutureTask.run(FutureTask.java:166) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 
    at java.lang.Thread.run(Thread.java:724) 
+0

Dodanie 'javax.faces-2.2.0.jar' (od http://repo1.maven.org/maven2/org/glassfish /javax.faces/2.2.0/) do ** WEB-INF/lib ** rozwiązało problem dla mnie. –

+0

Należy pamiętać, że zaakceptowana odpowiedź jest błędnym sposobem instalacji JSF na Tomcat. Odpowiednią drogę można znaleźć na naszej stronie wiki JSF: http://stackoverflow.com/tags/jsf/info – BalusC

Odpowiedz

15

Po 2 tygodniach znalazłem odpowiedź. bardzo prosto jak zawsze na końcu. należy skopiować zarówno

jsf-api.jar 
jsf-impl.jar 

do tomcat lib. posiadanie go w bibliotece project wydaje się nie działać.

+3

Wygląda na to, że twoja konfiguracja Eclipse jest poważnie pomieszana. Sugeruję ponowne zainstalowanie Eclipse dla Java EE i nie zmieniać żadnych jego ustawień, chyba że naprawdę wiesz, co dokładnie robi to ustawienie pod okładkami. Zauważ, że umieszczenie tych bibliotek w lib nie jest rozwiązaniem, ale obejściem. Prawdziwym rozwiązaniem jest posiadanie tych bibliotek w '/ WEB-INF/lib'. To, że ta część nie działa, jest problemem, który wciąż trzeba rozwiązać. – BalusC

+0

@BalusC dziękuję za złe wieści, ale na razie to działa dla mnie naprawdę chciałem się nauczyć jsf :) – DevZer0

+0

Mam nadzieję, że pamiętasz, że nie powinieneś zajmować się tym problemem i wszystkimi jego przyszłymi konsekwencjami dla JSF, ale do złego środowiska. Na początek powinieneś mieć dobre środowisko programistyczne i środowisko uruchomieniowe. – BalusC

1

Miałem ten sam problem, pracując z Eclipse Juno i Tomcat 7 - Tomee 1.6.0.

Chcę użyć mojarra 2.0.3 i znalazłem wiele problemów we wdrażaniu serwera. Rozwiązałem to usuwanie myfaces - *. Jar w lib Tomcat; następnie dodanie biblioteki mojarra w katalogu Tomcat, a następnie uruchomienie serwera. Teraz wszystko w porządku, działa.

Po wielu zmianach konfiguracji widziałem, że tak naprawdę działa biblioteka zainstalowana w katalogu Tomcat, ignorując bezpośrednio konfiguracje Eclipse. może błąd?

W końcu rozwiązałem swój problem, ręcznie zmieniając bibliotekę Tomcat na własną rękę. Nie sądzę, że będzie to już problemem w przyszłości.

0

Ta zależność zawierają wymagane biblioteki i może rozwiązać problem

'org.glassfish:javax.faces:2.3.0' 
Powiązane problemy