java.lang.ClassNotFoundException: javax.el.ExpressionFactory
問題
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中央リポジトリからダウンロードできます。
org.glassfish.web el-impl 2.2
代替ソリューション
場合によっては、「el-api.jar」ファイルが含まれていても、Tomcatは同じエラーメッセージを表示します。 次に、J2EE標準APIライブラリ「javaee.jar」を含めることができます。これには「javax.el.ExpressionFactory」クラスも含まれています。少なくともこれは私にとってはうまくいきます。
Note
この「javaee.jar」は、J2EESDKフォルダーにあります。
Eclipse IDEの場合
デバッグ中の場合は、サーバーインスタンスがjavaee.jarファイルを見つけられることを確認してください。

または、次の手順で自分で追加することができます
-
サーバーインスタンスをダブルクリックします。
-
「起動構成を開く」をクリックします。
-
「ブートストラップエントリ」に
javaee.jarを追加します。