java.lang.ClassNotFoundException: javax.el.ExpressionFactory
Problème
Une application Web Java déployée dans Tomcat affiche le message d'erreur suivant:
javax.servlet.ServletException: java.lang.NoClassDefFoundError: javax/el/ExpressionFactory org.apache.jasper.servlet.JspServlet.service(JspServlet.java:268) //... java.lang.ClassNotFoundException: javax.el.ExpressionFactory java.net.URLClassLoader$1.run(URLClassLoader.java:200) java.security.AccessController.doPrivileged(Native Method) java.net.URLClassLoader.findClass(URLClassLoader.java:188) //... javax.servlet.http.HttpServlet.service(HttpServlet.java:717) note The full stack trace of the root cause is available in the Apache Tomcat/6.0.26 logs.
Solution
La classe «javax.el.ExpressionFactory» appartient à la bibliothèque «el-api.jar», vous pouvez la télécharger depuis le référentiel central de Maven.
org.glassfish.web el-impl 2.2
Solution alternative
Dans certains cas, Tomcat affichera toujours le même message d'erreur, même si le fichier «el-api.jar» est inclus. Ensuite, vous pouvez essayer d'inclure la bibliothèque d'API standard J2EE, «javaee.jar», elle contient également la classe «javax.el.ExpressionFactory», au moins cela fonctionne pour moi.
Note
Ce «javaee.jar» peut être trouvé dans votre dossier J2EE SDK.
Pour Eclipse IDE
Si vous êtes en débogage, assurez-vous que votre instance de serveur est capable de trouver le fichierjavaee.jar
.
Ou vous pouvez l'ajouter vous-même avec les étapes suivantes
-
Double-cliquez sur l'instance de serveur.
-
Cliquez sur «Ouvrir la configuration de lancement».
-
Ajoutez
javaee.jar
dans «Bootstrap Entries».