问题
部署在Tomcat中的Java Web应用程序遇到以下错误消息:
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中央存储库下载它。
<dependency>
<groupId>org.glassfish.web</groupId>
<artifactId>el-impl</artifactId>
<version>2.2</version>
</dependency>
替代解决方案
在某些情况下,即使包含“ el-api.jar ”文件,Tomcat仍会提示相同的错误消息。 然后,您可以尝试包括J2EE标准API库“ javaee.jar ”,它也包含“ javax.el.ExpressionFactory ”类,至少这对我来说是有用的 。
注意
该“ javaee.jar”可以在您的J2EE SDK文件夹中找到。
对于Eclipse IDE
如果正在调试,请确保您的服务器实例能够找到javaee.jar
文件。
或者您可以按照以下步骤自行添加
- 双击服务器实例。
- 单击“打开启动配置”。
- 在“ Bootstrap条目”中添加
javaee.jar
。
参考
标签: jsf2
翻译自: https://mkyong.com/jsf2/java-lang-classnotfoundexception-javax-el-expressionfactory/