java.lang.ClassNotFoundException: javax.el.ExpressionFactory

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.

javax.el.ExpressionFactory

Ou vous pouvez l'ajouter vous-même avec les étapes suivantes

  1. Double-cliquez sur l'instance de serveur.

  2. Cliquez sur «Ouvrir la configuration de lancement».

  3. Ajoutezjavaee.jar dans «Bootstrap Entries».