java.lang.ClassNotFoundException: javax.servlet.jsp.jstl.core.Config

Lorsque je lance mon application après avoir saisi l’URL, cette exception est à venir. J’utilise Eclipse et Tomcat7.0.35. J’ai également ajouté Jstl.jar et jstl1.2.jar

Mon code est

java.lang.ClassNotFoundException: javax.servlet.jsp.jstl.core.Config at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1714) at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1559) at org.apache.myfaces.view.jsp.JspViewDeclarationLanguage.buildView(JspViewDeclarationLanguage.java:91) at org.apache.myfaces.lifecycle.RenderResponseExecutor.execute(RenderResponseExecutor.java:78) at org.apache.myfaces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:241) at javax.faces.webapp.FacesServlet.service(FacesServlet.java:199) 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:936) 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:1004) 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) 

Téléchargez les jars suivants et ajoutez-les à votre WEB-INF/lib :

  • jsp-api-2.0.jar
  • jstl-1.2.jar

L’erreur vous dit qu’il ne trouve pas la classe car elle n’est pas disponible dans votre application.

Si vous utilisez Maven , assurez-vous d’avoir la dépendance pour l’artefact jstl :

  javax.servlet jstl 1.2  

Si vous ne l’utilisez pas, assurez-vous d’inclure le JAR dans votre classpath. Voir cette réponse pour les liens de téléchargement.

Par défaut, le conteneur Tomcat ne contient aucune bibliothèque jstl. Pour résoudre ce problème, déclare jstl.jar dans votre fichier Maven pom.xml si vous travaillez dans un projet Maven ou si vous l’ajoutez au classpath de votre application.

  javax.servlet jstl 1.2  

Ajoutez jstl jar à votre classpath d’application.

Les bibliothèques jstl sont probablement absentes de votre classpath / non accessible par tomcat.

Vous devez append au moins les fichiers jar suivants dans votre WEB-INF/lib :

  • jsf-impl.jar
  • jsf-api.jar
  • jstl.jar

Juste un petit commentaire: parfois, Maven ne copie pas le fichier jstl-.jar dans le dossier WEB-INF même si le fichier pom.xml contient cette entrée.

J’ai dû copier manuellement le fichier JSTL jar dans / WEB-INF / lib sur le système de fichiers. Cela a résolu le problème. Le problème peut être lié au plug-in de packaging de guerre Maven.

Ajoutez la bibliothèque JSTL en tant que dépendance de votre projet ( javax.servlet.jsp.jstl.core.Config fait partie de ce package). Par exemple, si vous utilisiez Gradle , vous pourriez écrire dans un build.gradle:

 dependencies { comstack 'javax.servlet:jstl:1.2' } 

J’ai eu le même problème. Allez dans Propriétés du projet -> Déploiement Assemplbly et ajoutez jstl jar