I'm working on a project that is currently migrating from Apache Tomcat 6 to OC4J (due to the client's specifications).
The problem is that we're getting this:
2012-02-08 18:23:53.091 NOTIFICATION J2EE JSP-0008 Error: Exception 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
We're using, as you can see, OC4J 10.1.3. Almost every page on the project is using ELs... The only alternative is to use scriptlets but that would take long time.
We must use EL and OC4J 10.1.3 otherwise it'll cost too much to rebuild all the pages. How can I manage to solve this?
javax.el.ELException
is introduced in JSP/EL 2.1 which goes hand in hand with Servlet 2.5 which is part of Java EE 5. Tomcat 6.0 is a Servlet 2.5 compatible container.
OC4J 10.1.3, however, is an ancient J2EE 1.4 container, supporting only Servlet 2.4.
As long as your webapp's web.xml
is declared conform Servlet 2.4, all the code is programmed against the Servlet 2.4 / JSP 2.0 APIs, the /WEB-INF/lib
does not contain servletcontainer specific libraries such as a copy of jsp-api.jar
from Tomcat 6, and the webapp runs perfectly fine on Tomcat 5.5 (which is also a Servlet 2.4 container), then it should in theory work as good on OC4J 10.1.3.
This particular error indicates that you have libraries in /WEB-INF/lib
which are either copied from Tomcat 6, or have in turn Servlet 2.5 dependencies, such as for example JSF 2.0. Cleanup the /WEB-INF/lib
and/or downgrade the involved libraries to Servlet 2.4 compatible versions.