Tomcat7 no se inicia en eclipse indigo

después de declarar New Server en eclipse y ejecutarlo ... tomcat 7 no se inicia e imprime esto en la consola:

Starting Servlet Engine: Apache Tomcat/7.0.12
java.lang.NoSuchMethodError: javax.servlet.ServletContext.getSessionCookieConfig()Ljavax/servlet/SessionCookieConfig;
    at org.apache.catalina.deploy.WebXml.configureContext(WebXml.java:1281)
    at org.apache.catalina.startup.ContextConfig.webConfig(ContextConfig.java:1332)
    at org.apache.catalina.startup.ContextConfig.configureStart(ContextConfig.java:882)
    at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:317)
    at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)
    at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:89)
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5081)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:145)
    at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:1033)
    at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:774)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:145)
    at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:1033)
    at org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:291)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:145)
    at org.apache.catalina.core.StandardService.startInternal(StandardService.java:443)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:145)
    at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:727)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:145)
    at org.apache.catalina.startup.Catalina.start(Catalina.java:620)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:303)
    at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:431)

preguntado el 28 de julio de 12 a las 13:07

¿Tiene el jar servlet-api incluido en su classpath? -

Ese método getSessionCookieConfig() es nuevo en servlet-api 3.0; es posible que también tenga la versión incorrecta. -

Mi espacio de trabajo está vacío, no hay proyectos. -

1 Respuestas

Como otros han notado, probablemente tengas una versión anterior de servlet-api.jar en su classpath. Puede activar la carga de clase detallada (argumento de VM -verbose:class) para ver qué archivo .jar javax.servlet.ServletContext se está cargando desde. Tomcat 7 utiliza la versión 3.0 de la API. En nuestro caso (de prueba) teníamos la versión 2.4 en el classpath; excluyéndolo en la ruta de clase de prueba del complemento surefire (estamos basados ​​​​en Maven) funcionó, es decir <classpathDependencyExcludes>javax.servlet:servlet-api</classpathDependencyExcludes>. Tomcat 7 luego eligió su propia versión compatible. Si necesita tener el .jar en el classpath, puede obtener uno compatible con estas coordenadas de artefactos de Maven javax.servlet:javax.servlet-api:3.0.1.

respondido 06 mar '13, 16:03

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.