OC4J 10.1.3与表达式语言(EL)冲突

时间:2012-02-08 20:36:13

标签: java java-ee oc4j

我正在开发一个目前正在从Apache Tomcat 6迁移到OC4J的项目(由于客户端的规范)。

问题是我们得到了这个:

2012-02-08 18:23:53.091通知J2EE JSP-0008错误:异常Oracle.classloader.util.AnnotatedNoClassDefFoundError:

  Class not found: javax.el.ELException

Classe dependente: oracle.jsp.parse.JspBeanInfo
         Carregador: oc4j:10.1.3
    Origem do Código: /C:/Users/cvgpb/Desktop/Oracle-OC4J/j2ee/home/lib/ojsp.jar
  Configuração: <code-source> in META-INF/boot.xml in C:\Users\cvgpb\Desktop\Oracle-OC4J\j2ee\home\oc4j.jar

正如您所见,我们正在使用OC4J 10.1.3。 几乎项目的每个页面都使用EL ... 唯一的选择是使用scriptlet,但这需要很长时间。

我们必须使用EL和OC4J 10.1.3,否则重建所有页面的成本太高。 如何解决此问题?

1 个答案:

答案 0 :(得分:4)

在JSP / EL 2.1中引入了

javax.el.ELException,它与Servlet 2.5密切相关,Servlet 2.5是Java EE 5的一部分.Tomcat 6.0是一个与Servlet 2.5兼容的容器。

但是,OC4J 10.1.3是一个古老的J2EE 1.4容器,仅支持Servlet 2.4。

只要您的webapp的web.xml被声明为符合Servlet 2.4,所有代码都是针对Servlet 2.4 / JSP 2.0 API编程的,/WEB-INF/lib 包含servletcontainer特定的库,例如来自Tomcat 6的jsp-api.jar的副本,以及webapp在Tomcat 5.5(也是一个Servlet 2.4容器)上运行得非常好,那么理论上它应该在OC4J 10.1.3上运行良好。< / p>

此特定错误表示您在/WEB-INF/lib中拥有从Tomcat 6复制的库,或者依次具有Servlet 2.5依赖项,例如JSF 2.0。清除/WEB-INF/lib和/或将涉及的库降级为Servlet 2.4兼容版本。