java.lang.NoSuchMethodError: javax.servlet.ServletContext.getContextPath () Ljava / lang / String;

Tengo un problema con egovframework de Corea cuando implementé la guerra de archivos en Tomcat después de reiniciar Tomcat, mostró el siguiente error:

2011-12-23 09:16:01,101 ERROR [org.springframework.web.servlet.DispatcherServlet] Context initialization failed org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'imageRenderer' defined in ServletContext resource [/WEB-INF/config/egovframework/springmvc/egov-com-servlet.xml]: Initialization of bean failed; nested exception is java.lang.NoSuchMethodError: javax.servlet.ServletContext.getContextPath()Ljava/lang/String; at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:527) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456) at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:291) at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222) at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:288) at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:190) at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:580) at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:895) at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:425) at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:442) at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:458) at org.springframework.web.servlet.FrameworkServlet.initWebApplicationContext(FrameworkServlet.java:339) at org.springframework.web.servlet.FrameworkServlet.initServletBean(FrameworkServlet.java:306) at org.springframework.web.servlet.HttpServletBean.init(HttpServletBean.java:127) at javax.servlet.GenericServlet.init(GenericServlet.java:212) at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1139) at org.apache.catalina.core.StandardWrapper.allocate(StandardWrapper.java:791) at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:660) at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:469) at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:403) .................................................... 

Solía ​​:

 [root@localhost bin]# java -version java version "1.6.0_20" OpenJDK Runtime Environment (IcedTea6 1.9.10) (rhel-1.23.1.9.10.el5_7-i386) OpenJDK Client VM (build 19.0-b09, mixed mode) 

Aquí está el archivo WEB-INF / web.xml

 spring security  encodingFilter org.springframework.web.filter.CharacterEncodingFilter  encoding utf-8    encodingFilter *.do   encodingFilter *.mdo   HTMLTagFilter egovframework.com.cmm.filter.HTMLTagFilter   HTMLTagFilter *.do   <!--  LoginPolicyFilter egovframework.com.uat.uap.filter.EgovLoginPolicyFilter   LoginPolicyFilter /uat/uia/actionLogin.do  -->   contextConfigLocation classpath*:egovframework/spring/com/context-*.xml   org.springframework.web.context.ContextLoaderListener   action org.springframework.web.servlet.DispatcherServlet  contextConfigLocation /WEB-INF/config/egovframework/springmvc/egov-com-*.xml  1   action *.do    springSecurityFilterChain org.springframework.web.filter.DelegatingFilterProxy   springSecurityFilterChain /*   org.springframework.security.ui.session.HttpSessionEventPublisher    EgovSpringSecurityLogoutFilter egovframework.com.sec.security.filter.EgovSpringSecurityLogoutFilter   EgovSpringSecurityLogoutFilter /uat/uia/actionLogout.do    EgovSpringSecurityLoginFilter egovframework.com.sec.security.filter.EgovSpringSecurityLoginFilter  로그인 실패시 반활 될 URL설정 loginURL /uat/uia/egovLoginUsr.do    EgovSpringSecurityLoginFilter *.do   <!--  EgovSSOLogoutFilter egovframework.com.uat.sso.filter.EgovSSOLogoutFilter  SSO Global Logout 처리후 반환되는 페이지 설정 returnURL /j_spring_security_logout    EgovSSOLogoutFilter /uat/uia/actionLogout.do  -->  <!--  EgovSSOLoginFilter egovframework.com.uat.sso.filter.EgovSSOLoginFilter   EgovSSOLoginFilter *.do  -->   ajaxServlet net.sourceforge.ajaxtags.servlets.SourceLoader  prefix /ajaxtags    ajaxServlet /ajaxtags/js/*   ajaxServlet /ajaxtags/img/*   ajaxServlet /ajaxtags/css/*   index.jsp egovDevIndex.jsp   BASIC   600   404 /code404.jsp   500 /code500.jsp   

Aquí está /WEB-INF/config/egovframework/springmvc/egov-com-servlet.xml

                                <!--       -->  <!--   /**/*.do    -->  <!--  -->  <!--   /uat/uia/[a-zA-Z]+\.do /EgovLeft.do /uat/uia/actionLogin.do    -->      egovframework/com/cmm/error/dataAccessFailure egovframework/com/cmm/error/dataAccessFailure egovframework/com/cmm/error/egovBizException egovframework/com/uat/uia/EgovLoginUsr       <!--  -->  

Por favor, ayúdame, gracias

java.lang.NoSuchMethodError: javax.servlet.ServletContext.getContextPath () Ljava / lang / String;

Ese método fue agregado en Servlet 2.5 .

Entonces este problema puede tener al menos 3 causas:

  1. El contenedor de servlets no es compatible con Servlet 2.5.
  2. El web.xml no se declara conforme a Servlet 2.5 o posterior.
  3. La classpath de tiempo de ejecución de la aplicación web está llena de archivos JAR específicos del contenedor de servlet de una versión / versión de contenedor de servlet diferente que no admite Servlet 2.5.

Para resolverlo,

  1. Asegúrese de que su contenedor servlet sea compatible al menos con Servlet 2.5. Que son al menos Tomcat 6, Glassfish 2, JBoss AS 4.1, etcétera. Tomcat 5.5, por ejemplo, admite al Servlet 2.4 más alto. Si no puede actualizar Tomcat, entonces deberá degradar Spring a una versión compatible con Servlet 2.4.
  2. Asegúrese de que la statement raíz de web.xml cumpla con el Servlet 2.5 (o más nuevo, al menos el más alto sea cual sea el soporte de su tiempo de ejecución). Para un ejemplo, vea también en algún lugar a mitad de camino nuestra página wiki de servlets .
  3. Asegúrese de que no tiene ninguna biblioteca específica de servlet-api.jar como servlet-api.jar o j2ee.jar en /WEB-INF/lib o, lo que es peor, JRE/lib o JRE/lib/ext . Ellos no pertenecen allí. Este es un error de principiante bastante común en un bash de eludir los errores de comstackción en un IDE, consulte también ¿Cómo importo la API de javax.servlet en mi proyecto de Eclipse? .