2013-08-03 14 views
6

Ich probiere eine einfache Hallo Welt App in JSF aus, aber basierend auf der Ausnahme, die von Tomcat beim Start geworfen wird, sehe ich, dass FacesServlet nicht initialisiert wird. Ich habe die erforderlichen jar Dateien myfaces-api, bundle, impl und Commons Beanutils, Codec, Sammlungen, Kocher, Protokollierung. Abgesehen davon las ich in einer anderen Frage zu SO, dass ich auch jsf-api.jar and jsf-impl.jar benötigte, die ich auch in WEB-INF/lib platzierte und hinzufügte, um WegKonnte FacesServlet in Tomcat 7 nicht initialisieren - ClassNotFoundException

noch kein Glück zu bauen. Ich auf Ubuntu entwickle, mit Eclipse und Tomcat 7

Hier ist meine 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> 

Diese Ausnahme ist

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

die 'javax.faces-2.2.0.jar' (von http://repo1.maven.org/maven2/org/glassfish Hinzufügen /javax.faces/2.2.0/) bis ** WEB-INF/lib ** löste das Problem für mich. –

+0

Bitte beachten Sie, dass die akzeptierte Antwort eine falsche Methode zur Installation von JSF auf Tomcat ist. Für den richtigen Weg, siehe unsere JSF Wiki-Seite: http://StackOverflow.com/Tags/JSF/info – BalusC

Antwort

15

Nach 2 Wochen ich die Antwort gefunden. ganz einfach wie immer am Ende. Sie benötigen lib sowohl

jsf-api.jar 
jsf-impl.jar 

Zum Kater kopieren. es in der project lib zu haben scheint nicht zu funktionieren.

+3

Anscheinend ist deine Eclipse-Konfiguration ernsthaft durcheinander gebracht. Ich schlage vor, Eclipse für Java EE neu zu installieren und keine seiner Einstellungen zu ändern, es sei denn, Sie wirklich wirklich verstehen, was genau die Einstellung unter den Abdeckungen tut. Beachten Sie, dass das Platzieren dieser Bibliotheken in der Tomcat-Bibliothek keine Lösung, sondern eine Problemumgehung darstellt. Die wirkliche Lösung ist, diese Bibliotheken in webapps/WEB-INF/lib zu haben. Dass dieser Teil nicht funktioniert, ist ein Problem, das Sie noch lösen müssen. – BalusC

+0

@BalusC danke für die schlechten Nachrichten, aber vorerst funktioniert das für mich Ich wollte wirklich etwas lernen jsf :) – DevZer0

+0

Ich hoffe, dass Sie daran denken, dass Sie dieses Problem und all seine zukünftigen Folgen nicht ansprechen sollten JSF, aber in die schlechte Umgebung. Zu Beginn sollten Sie eine gute Entwicklungs- und Laufzeitumgebung haben. – BalusC

1

Ich hatte das gleiche Problem, arbeiten mit Eclipse Juno und Tomcat 7 - Tomee 1.6.0.

Ich möchte mojarra 2.0.3 verwenden und ich habe viele Probleme bei der Serverbereitstellung gefunden. Ich habe es gelöst löschen myfaces - *. Jar in Tomcat lib; Fügen Sie dann mojarra lib im Tomcat-Verzeichnis hinzu und starten Sie den Server. Jetzt ist alles in Ordnung, es läuft.

Nach vielen Änderungen der Konfiguration, habe ich gesehen, was wirklich funktioniert, ist die Bibliothek in Tomcat-Verzeichnis installiert, direkt ignorieren Eclipse-Konfigurationen. Vielleicht ein Fehler?

Endlich habe ich mein Problem gelöst, indem ich die Tomcat-Bibliothek manuell ändere. Ich glaube nicht, dass das in Zukunft ein Problem sein wird.

0

Diese Abhängigkeit Bibliotheken enthalten erforderlich und beheben kann Ihr Problem

'org.glassfish:javax.faces:2.3.0' 
Verwandte Themen