Java Tomcat7无法在eclipse indigo上启动

Java Tomcat7无法在eclipse indigo上启动,java,tomcat7,Java,Tomcat7,在eclipse中声明新服务器并运行后。。tomcat 7无法启动并在控制台中打印: Starting Servlet Engine: Apache Tomcat/7.0.12 java.lang.NoSuchMethodError: javax.servlet.ServletContext.getSessionCookieConfig()Ljavax/servlet/SessionCookieConfig; at org.apache.catalina.deploy.WebXml.co

在eclipse中声明新服务器并运行后。。tomcat 7无法启动并在控制台中打印:

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)

正如其他人所指出的,您的类路径上可能有一个较旧版本的
ServletAPI.jar
。您可以打开详细类加载(VM参数
-verbose:class
)来查看从哪个.jar文件
javax.servlet.ServletContext
加载。Tomcat7使用API版本3.0。在我们的(测试)案例中,类路径上有版本2.4;将其排除在surefire插件(我们基于Maven)的测试类路径中,即
javax.servlet:servlet api
。Tomcat7随后选择了自己的兼容版本。如果您需要在类路径上使用.jar,您可以获得一个与这些Maven工件坐标兼容的类路径。servlet:javax.servlet.servlet api:3.0.1

您的类路径中是否包含jar servlet api?该方法是getSessionCookieConfig()在servlet api 3.0中是新的-您可能也有错误的版本。我的工作空间是空的,没有项目。