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
.
Или вы можете добавить его самостоятельно, выполнив следующие действия
-
Двойной щелчок на экземпляре сервера.
-
Нажмите «Открыть конфигурацию запуска».
-
Добавьте
javaee.jar
в «Записи начальной загрузки».