1

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

java.lang.ClassNotFoundException: javax.el.StaticFieldELResolver

我已经看到过类似的问题,例如this one,但他们的解决方案对我不起作用。我尝试了以下失败:

  • 删除除 JDK 1.7 和 Apache Tomcat 7.0.41.0 之外的所有其他库引用
  • 将文件从 2.5 更新web.xml到 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">
  • 将文件从 2.5 更新sun-web.xml到 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 是运行 Apache Tomcat 7.0.41.0 和 Java 7 的 NetBeans 7.4。非常感谢任何帮助。

更新:

奇怪的是,如果我选择用 GlassFish 而不是 Tomcat 运行它,它运行时不会出错。所以肯定和Tomcat服务器有某种关系。

4

2 回答 2

2

该类javax.el.StaticFieldELResolverEL 3.0 API 的一部分。AFAIK 它在 Tomcat 7 版本中不可用。它在 Tomcat 8 中可用,但尚未在通用可用性中,因此将其用作您自己的风险。

你一定改变了什么。

于 2013-11-02T19:53:24.460 回答
2

方案一:在apache-tomcat-xxxx\lib文件夹内的el-api.jar文件设置classpath环境变量。

解决方案2:将apache-tomcat-xxxx\lib\el-api.jar 文件复制到jreX.X.X_XXX\lib\ext\ 文件夹中。

因为它是用来预加载tomcat服务器启动的

于 2018-05-30T10:24:42.820 回答