WebLogic 9.2: java.lang.NoClassDefFoundError: javax/el/ValueExpression

2.7k views Asked by At

I'm running WebLogic 9.2 on Windows XP Professional.

I'm getting the error(s) below when deploying my "acme" webapp ( acme.war ). However, I have no problems when deploying the same acme.war to Tomcat 6 or 7.

Between that Googling around I believe the cause may be that weblogic has some outdated libraries.

I would be grateful for help in identifying those libraries and which weblogic directory to deposit them into.

Thanks much in advance.

Error 500--Internal Server Error

java.lang.NoClassDefFoundError: javax/el/ValueExpression
    at org.apache.taglibs.standard.tag.common.core.SetSupport.doEndTag(SetSupport.java:155)
    at jsp_servlet._jsp.__header._jsp__tag12(__header.java:610)
    at jsp_servlet._jsp.__header._jsp__tag11(__header.java:575)
    at jsp_servlet._jsp.__header._jsp__tag2(__header.java:271)
    at jsp_servlet._jsp.__header._jspService(__header.java:145)
    at weblogic.servlet.jsp.JspBase.service(JspBase.java:34)
    at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:227)
    at weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:125)
    at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:283)
    at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:175)
    at weblogic.servlet.internal.RequestDispatcherImpl.invokeServlet(RequestDispatcherImpl.java:530)
    at weblogic.servlet.internal.RequestDispatcherImpl.include(RequestDispatcherImpl.java:459)
    at weblogic.servlet.jsp.PageContextImpl.include(PageContextImpl.java:159)
    at jsp_servlet._jsp.__login._jspService(__login.java:77)
    at weblogic.servlet.jsp.JspBase.service(JspBase.java:34)
    at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:227)
    at weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:125)
    at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:283)
    at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:175)
    at weblogic.servlet.internal.RequestDispatcherImpl.invokeServlet(RequestDispatcherImpl.java:530)
    at weblogic.servlet.internal.RequestDispatcherImpl.forward(RequestDispatcherImpl.java:266)
    at org.springframework.web.servlet.view.InternalResourceView.renderMergedOutputModel(InternalResourceView.java:238)
    at org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:262)
    at org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1180)
    at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:950)
    at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:852)
    at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:882)
    at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:778)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:743)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
    at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:227)
    at weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:125)
    at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:283)
    at weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:26)
    at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:42)
    at gov.noaa.nsd.controller.security.AuthenticationFilter.doFilter(AuthenticationFilter.java:83)
    at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:42)
    at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3270)
    at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
    at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:121)
    at weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:2019)
    at weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:1925)
    at weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1394)
    at weblogic.work.ExecuteThread.execute(ExecuteThread.java:209)
    at weblogic.work.ExecuteThread.run(ExecuteThread.java:181)
1

There are 1 answers

2
BalusC On BEST ANSWER

Your webapp apparently contains JSTL 1.2 libraries. JSTL 1.2 requires Servlet 2.5 / JSP 2.1. The mentioned missing class is part of JSP/EL 2.1. Weblogic 9.2 is however an old Servlet 2.4 / JSP 2.0 container (Tomcat 6 is a Servlet 2.5 container and Tomcat 7 is a Servlet 3.0 one).

In fact, you should be using JSTL 1.1 when deploying to a Servlet 2.4 container. But Weblogic itself as being a "full fledged" Java EE application server already ships with JSTL bundled. So you shouldn't need to bundle any JSTL libraries in your webapp. So to fix this particular problem, you just need to remove the JSTL 1.2 libraries from your webapp (and if applicable, also alter the web.xml to be Servlet 2.4 compliant instead of Servlet 2.5 compliant). The webapp will then use Weblogic's bundled JSTL 1.1.