2012-07-28 56 views
0

并运行它.. tomcat的7未能在控制台启动和打印:Tomcat7无法在Eclipse宣布新服务器之后启动Eclipse的靛蓝

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) 
+2

你有你的classpath中包含的jar servlet-api吗? – mabbas 2012-07-28 12:32:43

+0

该方法getSessionCookieConfig()在servlet-api 3.0中是新的 - 您可能也有错误的版本。 – jeff 2012-07-28 14:46:12

+0

我的工作空间为空,没有项目。 – 2012-07-29 07:15:36

回答

0

正如其他人所指出的,你可能有一个旧版本你的类路径上的servlet-api.jar。您可以打开详细的类加载(VM参数-verbose:class)以查看哪个.jar文件正在从中加载。 Tomcat 7使用API​​版本3.0。在我们的(测试)案例中,我们在类路径中使用了2.4版本;不包括它在Surefire插件的测试类路径中(我们是基于Maven的)工作,即<classpathDependencyExcludes>javax.servlet:servlet-api</classpathDependencyExcludes>。然后Tomcat 7拿起了自己的兼容版本。如果您需要在类路径中使用.jar,您可以使用这些Maven工件坐标javax.servlet:javax.servlet-api:3.0.1获得兼容的.jar文件。