我正在尝试使用几周前正在运行的servlet运行一个项目(之后没有进行任何修改)。但是,当我运行它时,我现在收到以下错误:
java.lang.ClassNotFoundException: javax.el.StaticFieldELResolver
我在this one看过类似的问题,但他们的解决方案对我不起作用。我尝试了下面的失败:
web.xml
文件从2.5更新为3.0:<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
sun-web.xml
文件从2.5更新为3.0:<!DOCTYPE sun-web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Application Server 9.0 Servlet 3.0//EN" "http://www.sun.com/software/appserver/dtds/sun-web-app_3_0-0.dtd">
el-api.jar
和jsp-api.jar
CATALINA_HOME
环境变量设置为指向Tomcat目录正在使用的IDE是使用Java 7运行Apache Tomcat 7.0.41.0的NetBeans 7.4。非常感谢任何帮助。
更新
奇怪的是,如果我选择使用GlassFish而不是Tomcat运行它,它会毫无错误地运行。因此必须与Tomcat服务器建立一些关系。
答案 0 :(得分:2)
类javax.el.StaticFieldELResolver
是EL 3.0 API. AFAIK的一部分,它在Tomcat 7版本中不可用。 It is available in Tomcat 8,但这还不是一般可用性,因此请将其用作自己的风险。
你必须改变一些东西。
答案 1 :(得分:1)
解决方案1: apache-tomcat-x.x.xx \ lib文件夹的内部 el-api.jar文件集classpath环境变量。
解决方案2: 将apache-tomcat-x.x.xx \ lib \ el-api.jar文件复制到jreX.X.X_XXX \ lib \ ext \文件夹中。
因为它用于预加载tomcat服务器启动