我在Windows XP Professional上运行WebLogic 9.2。
在部署我的“acme”webapp(acme.war)时,我收到了以下错误。 但是,在将相同的acme.war部署到Tomcat 6或7时,我没有任何问题。
在谷歌搜索之间我相信原因可能是因为weblogic有一些过时的库。
我很感激帮助识别这些库以及将它们存入哪个weblogic目录。
非常感谢。
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)
答案 0 :(得分:3)
您的webapp显然包含JSTL 1.2库。 JSTL 1.2需要Servlet 2.5 / JSP 2.1。提到的missing class是JSP / EL 2.1的一部分。但是,Weblogic 9.2是旧的Servlet 2.4 / JSP 2.0容器(Tomcat 6是Servlet 2.5容器,而Tomcat 7是Servlet 3.0容器)。
实际上,在部署到Servlet 2.4容器时,您应该使用JSTL 1.1。但是,Weblogic本身就是一个“完全成熟的”Java EE应用服务器,已经捆绑了JSTL。因此,您不需要在Web应用程序中捆绑任何JSTL库。因此,要解决此特定问题,您只需要从webapp 删除 JSTL 1.2库(如果适用,还可以将web.xml
更改为符合Servlet 2.4而不是Servlet 2.5) 。然后,webapp将使用Weblogic捆绑的JSTL 1.1。