java.lang.NoClassDefFoundError: javax / servlet / jsp / jstl / core / Config

Sto sviluppando un’applicazione per FB Login con sito web usando Javascript e JSF. Ho pubblicato il mio codice qui . Il problema è che quando eseguo la mia applicazione non mostra la pagina JSF, ma lancia la seguente eccezione:

Nov 28, 2013 7:21:46 PM org.apache.catalina.core.StandardWrapperValve invoke SEVERE: Servlet.service() for servlet [Faces Servlet] in context with path [/FacebookLogin] 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:344) at com.sun.faces.application.view.JspViewHandlingStrategy.buildView(JspViewHandlingStrategy.java:153) at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:99) 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:222) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99) at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408) at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1023) at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589) at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310) at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) at java.lang.Thread.run(Unknown Source) 

Qual è il problema qui e come posso risolverlo?

java.lang.NoClassDefFoundError: javax / servlet / jsp / jstl / core / Config

Come suggerisce il nome del pacchetto, la class menzionata fa parte di JSTL . L’eccezione sta chiaramente dicendo che il file di definizione della class della class menzionata non può essere trovato nel classpath di runtime. Cioè il file Config.class o almeno il file JAR che contiene quella class manca nel percorso di class runtime di webapp.

JSTL è normalmente già fornito da un contenitore Java EE completo come TomEE , JBoss AS / EAP / WildFly , Payara / GlassFish , WebLogic , ecc. Ma non dai contenitori JSP / Servlet barebone come Tomcat e Jetty . Per loro, è necessario fornire JSTL insieme all’applicazione Web autonomamente, esattamente come faresti per JSF (che è già fornito da contenitori Java EE a pieno titolo).

Stai affrontando questa eccezione perché Facelets ha per i suoi una dipendenza dal file JAR di implementazione JSTL, mentre stai utilizzando Tomcat che non viene fornito con JSTL. JSTL è una libreria separata disponibile in flavor di jstl-1.2.jar . Basta scaricarlo e rilasciarlo nella cartella webapp /WEB-INF/lib , insieme ai file JAR JSF che hai già inserito e questa eccezione dovrebbe scomparire. Gli utenti di Maven possono ottenere questo risultato aggiungendo la dipendenza sottostante (e eseguendo una ricostruzione / ridistribuzione completa):

  javax.servlet jstl 1.2  

In alternativa, sostituisci Tomcat con un vero contenitore Java EE.

Guarda anche:

  • La nostra pagina wiki JSF – contiene le istruzioni di installazione JSF

Voglio solo aggiungere il mio contributo se qualcuno riceve questo errore nel tentativo di creare un modulo springframework-4.0.7-RELEASE per jboss-eap-6.4.0.GA. Il mio module.xml ora contiene:

  ...   ...