0

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)
4

1 に答える 1

0

servlet-api.jar他の人が指摘しているように、おそらくクラスパスに古いバージョンがあります。詳細なクラスの読み込み (VM 引数) をオンにして、-verbose:classどの .jar ファイルjavax.servlet.ServletContextが読み込まれているかを確認できます。Tomcat 7 は API バージョン 3.0 を使用します。私たちの (テスト) ケースでは、クラスパスにバージョン 2.4 がありました。確実なプラグイン(Mavenベース)のテストクラスパスでそれを除外すると、つまり<classpathDependencyExcludes>javax.servlet:servlet-api</classpathDependencyExcludes>. その後、Tomcat 7 は互換性のある独自のバージョンを採用しました。クラスパスに .jar が必要な場合は、これらの Maven アーティファクト 座標と互換性のあるものを取得できますjavax.servlet:javax.servlet-api:3.0.1

于 2013-03-05T18:11:07.517 に答える