我在两个月前使用过Tomcat,它开始运行了。现在我收到了这条消息:
SEVERE: ContainerBase.addChild: start:
org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/docs]]
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:154)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:901)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:877)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:633)
at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:1120)
at org.apache.catalina.startup.HostConfig$DeployDirectory.run(HostConfig.java:1678)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
at java.util.concurrent.FutureTask.run(FutureTask.java:262)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:744)
Caused by: java.lang.NoSuchMethodError: javax.servlet.ServletContext.getSessionCookieConfig()Ljavax/servlet/SessionCookieConfig;
at org.apache.catalina.deploy.WebXml.configureContext(WebXml.java:1374)
at org.apache.catalina.startup.ContextConfig.webConfig(ContextConfig.java:1351)
at org.apache.catalina.startup.ContextConfig.configureStart(ContextConfig.java:878)
at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:376)
at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)
at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:90)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5322)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
... 10 more
请注意以下行为:
尝试运行catalina.bat时出现此错误。如果我通过Eclipse运行Tomcat,它会成功启动
我再次下载了相同版本的Tomcat并立即运行它而不添加任何webapps(只是加载默认的Tomcat localhost页面),但我又一次收到此错误。
根据之前的类似问题,我在apache的servlet-api.jar
文件夹中替换了lib
,但它没有任何区别
我最近成功推出了startup.bat
,我认为一切都没有改变。请指教,谢谢。
答案 0 :(得分:1)
Caused by: java.lang.NoSuchMethodError: javax.servlet.ServletContext.getSessionCookieConfig()Ljavax/servlet/SessionCookieConfig;
从版本3开始引入了getSessionCookieConfig(),因此会抛出此错误,因为类路径中存在绝对旧版本。
我建议您解决问题:
1 - 确保将servlet版本更新为3
2 - 尝试找到servlet-api的任何依赖并摆脱它
3 - 检查您的类路径是否有任何潜在的依赖
4-make / WEB-INF / lib当然不包含servlet-api
5 - 确保web.xml符合servlet 3
的标准答案 1 :(得分:0)
tomcat肯定会尝试部署包含错误版本javax.servlet.ServletContext
的应用程序。
当开始新的新tomcat安装时,请确保没有部署aplication,即$ CATALINA_BASE / webapps为空并且不存在$ CATALINA_BASE / conf / [enginename] / [hostname] / [webappname] .xml。请确保CATALINA_BASE和CATALINA_HOME环境变量显示在正确的安装中。确保$ CATALINA_HOME / conf / catalina.properties是全新安装的文件。与eclipse一起使用全新安装时,也会删除tmp和work文件夹。这足以让tomcat干净利落。
现在让你的tomcat再次启动 你的应用程序。请确保该应用程序没有带有过时版本的javax.servlet.ServletContext
。最明显的是,应用程序带来了自己的servlet-api.jar
,但也可能是由包含该类的其他jar引起的。如果您在应用程序中找不到servlet-api,请从您的应用程序中解压缩所有jar并查看javax.servlet
文件夹。
答案 2 :(得分:0)
检查你的java lib /所有文件系统中的' servlet.jar'参考下面的帖子......
Java Servlet deployment on tomcat eclipse - Need reference
删除了类路径中的servlet.jar。我刚刚搜索了servlet.jar并删除了除lib文件夹之外的所有内容。这帮我摆脱了这个错误:)
答案 3 :(得分:0)
一种可能是你在" lib / ext"中有错误的JAR;在你的JAVA_HOME。