java.lang.ClassNotFoundException: javax.el.ExpressionFactory

java.lang.ClassNotFoundException: javax.el.ExpressionFactory

проблема

Веб-приложение Java, развернутое в Tomcat, отображает следующее сообщение об ошибке:

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.

Решение

Класс «javax.el.ExpressionFactory» принадлежит библиотеке «el-api.jar», вы можете загрузить его из центрального репозитория Maven.


    org.glassfish.web
    el-impl
    2.2

Альтернативное решение

В некоторых случаях Tomcat по-прежнему будет выдавать то же сообщение об ошибке, даже если включен файл «el-api.jar». Затем вы можете попробовать включить стандартную библиотеку API J2EE, «javaee.jar», она также содержит класс «javax.el.ExpressionFactory», по крайней мере, для меня это работает.

Note
Этот «javaee.jar» можно найти в папке J2EE SDK.

Для Eclipse IDE

Если вы находитесь в процессе отладки, убедитесь, что ваш экземпляр сервера может найти файлjavaee.jar.

javax.el.ExpressionFactory

Или вы можете добавить его самостоятельно, выполнив следующие действия

  1. Двойной щелчок на экземпляре сервера.

  2. Нажмите «Открыть конфигурацию запуска».

  3. Добавьтеjavaee.jar в «Записи начальной загрузки».