2012-07-04 15 views
5

Wenn ich meine Anwendung ausführe, ist alles in Ordnung, wenn ich den Knopf drücke und ich auf eine andere xhtml-Seite umadressiere. Dann Konsole verdunkeln, bis ich Serveranzeige stoppen:Ausnahme java.lang.NoClassDefFoundError in der dynamischen Webanwendung, Eclipse, JSF

SEVERE: Servlet.service() for servlet [Faces Servlet] in context with path [/ChatAzure] threw exception [javax/servlet/jsp/jstl/core/Config] with root cause 
java.lang.NoClassDefFoundError: javax/servlet/jsp/jstl/core/Config 
    at com.sun.faces.application.view.JspViewHandlingStrategy.executePageToBuildView(JspViewHandlingStrategy.java:345) 
    at com.sun.faces.application.view.JspViewHandlingStrategy.buildView(JspViewHandlingStrategy.java:154) 
    at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:100) 
    at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101) 
    at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139) 
    at javax.faces.webapp.FacesServlet.service(FacesServlet.java:594) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:224) 
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:169) 
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472) 
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168) 
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98) 
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:928) 
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) 
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407) 
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:987) 
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:539) 
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:298) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) 
    at java.lang.Thread.run(Thread.java:662) 

Ich benutze: Eklipse, jsf2-1-7, jstl-1.2.jar, Tomcat v0.7. Ich weiß nicht, was los ist, ich brauche Hilfe.

Antwort

9

Die erwähnte Klasse ist Teil von JSTL. Dies wird normalerweise bereits von einem vollwertigen Java-EE-Container bereitgestellt, nicht jedoch von Tomcat als Barebones-JSP/Servlet-Container. Sie müssen JSTL selbst zusammen mit der Webanwendung bereitstellen. Es muss letztendlich in den Laufzeitklassenpfad der Webanwendung gestellt werden.

Sie haben jstl-1.2.jar richtig erwähnt (ich nehme an, dass es genau das ist, was Sie in our JSTL wiki page finden konnten), aber dieses Problem zeigt an, dass es offenbar nicht am richtigen Ort platziert wurde. Sie müssen es in /WEB-INF/lib Ordner des Webprojekts platzieren. Dieser Ordner wird vom standardmäßigen Laufzeitklassenpfad von webapp abgedeckt. Es muss nichts mehr getan werden. Wenn Sie jemals in dem Projekt Build Path Eigenschaften in einem Versuch fiedled haben, um es zu lösen, sollten Sie undo alle diese Versuche rückgängig machen.


Unrelated auf das konkrete Problem: Warum sind Sie noch mit Legacy-JSP? Es wurde veraltet und von Facelets (XHTML) seit JSF 2.0. Stellen Sie sicher, dass Sie JSF 2.x-Ressourcen und nicht JSF 1.x-Ressourcen lesen, während Sie JSF lernen.

+0

großartig, vielen Dank! :) – user1494328

+0

Gern geschehen. – BalusC

+0

Wenn Sie mit 1.2.1 gehen, stellen Sie sicher, dass Sie beide. JARs herunterladen und beide – th3byrdm4n