java.lang.ClassNotFoundException: javax.el.ExpressionFactory

java.lang.ClassNotFoundException: javax.el.ExpressionFactory

Problem

Eine in Tomcat implementierte Java-Webanwendung zeigt die folgende Fehlermeldung an:

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.

Lösung

Die Klasse "javax.el.ExpressionFactory" gehört zur Bibliothek "el-api.jar". Sie können sie aus dem zentralen Maven-Repository herunterladen.


    org.glassfish.web
    el-impl
    2.2

Alternative Lösung

In einigen Fällen wird Tomcat immer noch dieselbe Fehlermeldung anzeigen, auch wenn die Datei "el-api.jar" enthalten ist. Dann können Sie versuchen, die J2EE-Standard-API-Bibliothek „javaee.jar“ einzuschließen. Sie enthält auch die Klasse „javax.el.ExpressionFactory“. Zumindest funktioniert dies für mich.

Note
Diese "javaee.jar" befindet sich in Ihrem J2EE SDK-Ordner.

Für die Eclipse-IDE

Stellen Sie beim Debuggen sicher, dass Ihre Serverinstanz die Dateijavaee.jarfinden kann.

javax.el.ExpressionFactory

Oder Sie können es mit den folgenden Schritten selbst hinzufügen

  1. Doppelklicks auf die Serverinstanz.

  2. Klicken Sie auf "Startkonfiguration öffnen".

  3. Fügen Siejavaee.jar in "Bootstrap-Einträge" hinzu.