我尝试创建/运行基本JSP并遇到以下错误。我看到其他人遇到了类似的问题,但是,我还没能找到(或正确实施)解决手头问题的方法。任何帮助将不胜感激!
SEVERE: A child container failed during start
java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/SimpleServletProject]]
at java.util.concurrent.FutureTask.report(FutureTask.java:122)
at java.util.concurrent.FutureTask.get(FutureTask.java:192)
at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:1123)
at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:816)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1575)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1565)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
Caused by: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/SimpleServletProject]]
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:154)
... 6 more
Caused by: java.lang.NoClassDefFoundError: HttpServletRequest
at java.lang.Class.getDeclaredMethods0(Native Method)
at java.lang.Class.privateGetDeclaredMethods(Class.java:2693)
at java.lang.Class.getDeclaredMethods(Class.java:1967)
at org.apache.catalina.util.Introspection.getDeclaredMethods(Introspection.java:127)
at org.apache.catalina.startup.WebAnnotationSet.loadMethodsAnnotation(WebAnnotationSet.java:287)
at org.apache.catalina.startup.WebAnnotationSet.loadApplicationServletAnnotations(WebAnnotationSet.java:140)
at org.apache.catalina.startup.WebAnnotationSet.loadApplicationAnnotations(WebAnnotationSet.java:65)
at org.apache.catalina.startup.ContextConfig.applicationAnnotationsConfig(ContextConfig.java:415)
at org.apache.catalina.startup.ContextConfig.configureStart(ContextConfig.java:892)
at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:386)
at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:117)
at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:90)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5380)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
... 6 more
Caused by: java.lang.ClassNotFoundException: HttpServletRequest
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1720)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1571)
... 20 more
Jan 22, 2015 9:04:06 PM org.apache.catalina.core.ContainerBase startInternal
SEVERE: A child container failed during start
java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost]]
at java.util.concurrent.FutureTask.report(FutureTask.java:122)
at java.util.concurrent.FutureTask.get(FutureTask.java:192)
at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:1123)
at org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:300)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
at org.apache.catalina.core.StandardService.startInternal(StandardService.java:443)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:739)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
at org.apache.catalina.startup.Catalina.start(Catalina.java:689)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:483)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:321)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:455)
Caused by: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost]]
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:154)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1575)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1565)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
Caused by: org.apache.catalina.LifecycleException: A child container failed during start
at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:1131)
at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:816)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
... 6 more
Jan 22, 2015 9:04:06 PM org.apache.catalina.startup.Catalina start
SEVERE: The required Server component failed to start so Tomcat is unable to start.
org.apache.catalina.LifecycleException: Failed to start component [StandardServer[8005]]
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:154)
at org.apache.catalina.startup.Catalina.start(Catalina.java:689)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:483)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:321)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:455)
Caused by: org.apache.catalina.LifecycleException: Failed to start component [StandardService[Catalina]]
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:154)
at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:739)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
... 7 more
Caused by: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina]]
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:154)
at org.apache.catalina.core.StandardService.startInternal(StandardService.java:443)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
... 9 more
Caused by: org.apache.catalina.LifecycleException: A child container failed during start
at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:1131)
at org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:300)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
... 11 more
Jan 22, 2015 9:04:06 PM org.apache.coyote.AbstractProtocol pause
INFO: Pausing ProtocolHandler ["http-bio-8080"]
Jan 22, 2015 9:04:06 PM org.apache.coyote.AbstractProtocol pause
INFO: Pausing ProtocolHandler ["ajp-bio-8009"]
Jan 22, 2015 9:04:06 PM org.apache.catalina.core.StandardService stopInternal
INFO: Stopping service Catalina
Jan 22, 2015 9:04:06 PM org.apache.coyote.AbstractProtocol destroy
INFO: Destroying ProtocolHandler ["http-bio-8080"]
Jan 22, 2015 9:04:06 PM org.apache.coyote.AbstractProtocol destroy
INFO: Destroying ProtocolHandler ["ajp-bio-8009"]
答案 0 :(得分:18)
答案 1 :(得分:7)
您必须将servlet-api.jar
与war文件中的其他库一起打包。您可以通过打开war文件并导航到WEB-INF / lib文件夹来验证这一点。
理想情况下,您不应该提供servlet-api jar。在您的情况下,容器Tomcat负责在部署时为您的应用程序提供容器。如果您尝试提供它,则由于版本不匹配等问题而出现。最佳做法是避免包装它。将其从WEB-INF / lib中删除。
其他信息
如果您使用maven作为包装,那么只需添加带有依赖关系的provided
标签,maven就会确保不将其打包到最终的war文件中。像
<dependency>
<artifact>..
<group> ...
<version> ...
<scope>provided</scope>
</<dependency>
答案 2 :(得分:4)
您的webapp在其/ WEB-INF / lib中具有servletcontainer特定的库,如servlet-api.jar文件。这不对。
全部删除它们。
/ WEB-INF / lib应仅包含特定于webapp的库,而不应包含servletcontainer。 servletcontainer(如Tomcat)是应该已经提供servletcontainer特定库的人。
如果您从不同品牌/版本的任意servlet容器提供库,您将遇到此类问题,因为您的webapp无法在不同品牌/版本的servlet容器上运行而不是那些图书馆的起源地。
如何解决: 在Eclipse中 在eclipse Properties中右键单击项目 - &gt; Java构建路径 - &gt;添加库 - &gt;服务器运行时库 - &gt; Apache Tomcat
Im Maven项目: -
在pom.xml文件中添加以下行
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>${default.javax.servlet.version}</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>jsp-api</artifactId>
<version>${default.javax.servlet.jsp.version}</version>
<scope>provided</scope>
</dependency>
答案 3 :(得分:4)
我遇到了类似的问题,这是因为我在.java文件和web.xml中编写了WebServlet Path。从任何一个位置删除它对我来说都很好。
在.java文件中
@WebServlet("/index1.jsp")
并在web.xml中
<servlet>
<servlet-name>Logout</servlet-name>
<servlet-class>tpc.Logout</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Logout</servlet-name>
<url-pattern>/index1.jsp</url-pattern>
</servlet-mapping>
答案 4 :(得分:3)
删除名为Servers(或Servers1,包含server.xml的Servers2)的项目,在Package Explorer(工作区)中找到它
从Eclipse中删除服务器: 转到窗口&gt;偏好&gt;服务器&gt;运行时环境,这里从eclipse中删除你正在使用的服务器并再次添加它(这样做会在Eclipse中创建一个新的Server项目文件夹),
从Project中删除服务器: 同时删除项目中的服务器(构建路径&gt;配置路径&gt; Java构建路径)并再次添加。
现在你有了一个新的Server项目,它的server.xml上没有Multiple Context,只删除server.xml中的重复路径解决了exixting问题,但仍然是服务器启动,通过这个Server启动(Apache Tomcat v7)并正常工作
我不知道这是不是好习惯,我是编程的先驱。
答案 5 :(得分:2)
我尝试使用http servlet,当我编写重复的 @WebServlet 时,我发现了这个问题,我遇到了这个问题。在我删除或更改 @WebServlet 后,它是工作
<强> 1.Class 强>
@WebServlet("/display")
public class MyFirst extends HttpServlet {
<强> 2.Class 强>
@WebServlet("/display")
public class MySecond extends HttpServlet {
答案 6 :(得分:1)
检查JAVA_HOME是否设置为1.7或更低。因为tomcat 7与jdk 1.8不兼容
这对我有用
答案 7 :(得分:1)
这对我有用:
1)将commons-logging.jar添加到WEB-INF / lib文件夹
2)将此jar添加为maven依赖项,例如将其添加到pom.xml:
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<version>1.2</version>
</dependency>
3)Maven安装
4)运行服务器。
希望它有所帮助。
答案 8 :(得分:0)
我遇到类似日志的类似问题。我使用JDK 1.6和apache tomcat 7.将java_home设置为1.7解决了这个问题。
答案 9 :(得分:0)
有些时候由于java版本和tomcat版本不兼容而出现此问题。选择两者的兼容版本。
答案 10 :(得分:0)
面临同样的问题。将JRE更改为正确的1.8版本并执行maven clean并构建解决问题。您可能需要更改项目构面并验证正确的路径。
答案 11 :(得分:0)
答案 12 :(得分:0)
添加了AWS依赖项并出现此错误。当我从pom中删除它时,错误消失了。可能你可能也有同样的情况。
答案 13 :(得分:0)
此问题也可能是由于Maven存储库损坏造成的。
在使用Eclipse时,我会不时观察到SEVERE: A child container failed during start
消息。我的Eclipse工作区有几个项目。一些项目具有共同的外部依赖性。如果Maven存储库为空(或者我将新的依赖项添加到pom.xml
文件中),则Eclipse开始将pom.xml
中指定的库下载到Maven存储库中。 Eclipse对工作空间中的多个项目并行进行。可能会发生几个Eclipse线程将同一文件同时下载到Maven存储库中同一位置的情况。结果,此文件已损坏。
所以,这就是解决问题的方法。
rm -rf $HOME/.m2
)。mvn package
。对于每个项目 而不是并行运行命令,这一点很重要;因此,您确保每次仅运行一个Maven实例。答案 14 :(得分:0)
我在项目中发现了类似的问题。将缺少类定义的jar粘贴到tomcat的lib目录中后,此问题已解决。