java.lang.ClassNotFoundException:javax.el.StaticFieldELResolver

时间:2013-11-02 19:40:44

标签: java tomcat servlets netbeans classnotfoundexception

我正在尝试使用几周前正在运行的servlet运行一个项目(之后没有进行任何修改)。但是,当我运行它时,我现在收到以下错误:

java.lang.ClassNotFoundException: javax.el.StaticFieldELResolver

我在this one看过类似的问题,但他们的解决方案对我不起作用。我尝试了下面的失败:

  • 删除JDK 1.7和Apache Tomcat 7.0.41.0以外的所有其他库引用
  • 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">
  • 验证Tomcat库是否包含el-api.jarjsp-api.jar
  • CATALINA_HOME环境变量设置为指向Tomcat目录

正在使用的IDE是使用Java 7运行Apache Tomcat 7.0.41.0的NetBeans 7.4。非常感谢任何帮助。

更新

奇怪的是,如果我选择使用GlassFish而不是Tomcat运行它,它会毫无错误地运行。因此必须与Tomcat服务器建立一些关系。

2 个答案:

答案 0 :(得分:2)

javax.el.StaticFieldELResolverEL 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服务器启动