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.jar
finden kann.
Oder Sie können es mit den folgenden Schritten selbst hinzufügen
-
Doppelklicks auf die Serverinstanz.
-
Klicken Sie auf "Startkonfiguration öffnen".
-
Fügen Sie
javaee.jar
in "Bootstrap-Einträge" hinzu.