title: Tomcat 8.0 won't start with pure Spring MVC template
body: <p>I have created a template <code>Spring MVC project template</code> using <code>STS 3.7.3</code> and <code>jdk 1.8</code>.</p>
  
  <p>I run generated code on <code>Pivotal tc Server Developer Edition</code> provided on <code>STS 3.7.3</code>. The server started and application is deployed and the <code>Hello world</code> page is shown.</p>
  
  <p>However when I add <code>tomcat 8.0</code> server (which starts successfully without any deployed app) and start to deploy exactly same application I get:</p>
  
  <pre><code>SEVERE: A child container failed during start
  java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/core]]
      at java.util.concurrent.FutureTask.report(Unknown Source)
      at java.util.concurrent.FutureTask.get(Unknown Source)
      at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:915)
      at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:871)
      at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:147)
      at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1407)
      at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1397)
      at java.util.concurrent.FutureTask.run(Unknown Source)
      at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
      at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
      at java.lang.Thread.run(Unknown Source)
  Caused by: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/core]]
      at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:153)
      ... 6 more
  Caused by: java.lang.NullPointerException
      at org.apache.jasper.servlet.TldScanner$TldScannerCallback.scanWebInfClasses(TldScanner.java:401)
      at org.apache.tomcat.util.scan.StandardJarScanner.scan(StandardJarScanner.java:208)
      at org.apache.jasper.servlet.TldScanner.scanJars(TldScanner.java:262)
      at org.apache.jasper.servlet.TldScanner.scan(TldScanner.java:106)
      at org.apache.jasper.servlet.JasperInitializer.onStartup(JasperInitializer.java:103)
      at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5261)
      at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:147)
      ... 6 more
  
  maj 25, 2016 2:36:25 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(Unknown Source)
      at java.util.concurrent.FutureTask.get(Unknown Source)
      at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:915)
      at org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:262)
      at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:147)
      at org.apache.catalina.core.StandardService.startInternal(StandardService.java:441)
      at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:147)
      at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:787)
      at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:147)
      at org.apache.catalina.startup.Catalina.start(Catalina.java:629)
      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:351)
      at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:485)
  Caused by: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost]]
      at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:153)
      at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1407)
      at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1397)
      at java.util.concurrent.FutureTask.run(Unknown Source)
      at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
      at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
      at java.lang.Thread.run(Unknown Source)
  Caused by: org.apache.catalina.LifecycleException: A child container failed during start
      at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:923)
      at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:871)
      at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:147)
      ... 6 more
  
  maj 25, 2016 2:36:25 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:153)
      at org.apache.catalina.startup.Catalina.start(Catalina.java:629)
      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:351)
      at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:485)
  Caused by: org.apache.catalina.LifecycleException: Failed to start component [StandardService[Catalina]]
      at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:153)
      at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:787)
      at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:147)
      ... 7 more
  Caused by: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina]]
      at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:153)
      at org.apache.catalina.core.StandardService.startInternal(StandardService.java:441)
      at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:147)
      ... 9 more
  Caused by: org.apache.catalina.LifecycleException: A child container failed during start
      at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:923)
      at org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:262)
      at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:147)
      ... 11 more
  
  maj 25, 2016 2:36:25 PM org.apache.coyote.AbstractProtocol pause
  INFO: Pausing ProtocolHandler ["http-nio-8080"]
  maj 25, 2016 2:36:25 PM org.apache.coyote.AbstractProtocol pause
  INFO: Pausing ProtocolHandler ["ajp-nio-8009"]
  maj 25, 2016 2:36:25 PM org.apache.catalina.core.StandardService stopInternal
  INFO: Stopping service Catalina
  maj 25, 2016 2:36:25 PM org.apache.coyote.AbstractProtocol destroy
  INFO: Destroying ProtocolHandler ["http-nio-8080"]
  maj 25, 2016 2:36:25 PM org.apache.coyote.AbstractProtocol destroy
  SEVERE: Failed to destroy end point associated with ProtocolHandler ["http-nio-8080"]
  java.lang.NullPointerException
      at org.apache.tomcat.util.net.NioEndpoint.releaseCaches(NioEndpoint.java:316)
      at org.apache.tomcat.util.net.NioEndpoint.unbind(NioEndpoint.java:492)
      at org.apache.tomcat.util.net.AbstractEndpoint.destroy(AbstractEndpoint.java:821)
      at org.apache.coyote.AbstractProtocol.destroy(AbstractProtocol.java:534)
      at org.apache.catalina.connector.Connector.destroyInternal(Connector.java:1023)
      at org.apache.catalina.util.LifecycleBase.destroy(LifecycleBase.java:297)
      at org.apache.catalina.core.StandardService.destroyInternal(StandardService.java:589)
      at org.apache.catalina.util.LifecycleBase.destroy(LifecycleBase.java:297)
      at org.apache.catalina.core.StandardServer.destroyInternal(StandardServer.java:877)
      at org.apache.catalina.util.LifecycleBase.destroy(LifecycleBase.java:297)
      at org.apache.catalina.startup.Catalina.start(Catalina.java:633)
      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:351)
      at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:485)
  
  maj 25, 2016 2:36:25 PM org.apache.coyote.AbstractProtocol destroy
  INFO: Destroying ProtocolHandler ["ajp-nio-8009"]
  maj 25, 2016 2:36:25 PM org.apache.coyote.AbstractProtocol destroy
  SEVERE: Failed to destroy end point associated with ProtocolHandler ["ajp-nio-8009"]
  java.lang.NullPointerException
      at org.apache.tomcat.util.net.NioEndpoint.releaseCaches(NioEndpoint.java:316)
      at org.apache.tomcat.util.net.NioEndpoint.unbind(NioEndpoint.java:492)
      at org.apache.tomcat.util.net.AbstractEndpoint.destroy(AbstractEndpoint.java:821)
      at org.apache.coyote.AbstractProtocol.destroy(AbstractProtocol.java:534)
      at org.apache.catalina.connector.Connector.destroyInternal(Connector.java:1023)
      at org.apache.catalina.util.LifecycleBase.destroy(LifecycleBase.java:297)
      at org.apache.catalina.core.StandardService.destroyInternal(StandardService.java:589)
      at org.apache.catalina.util.LifecycleBase.destroy(LifecycleBase.java:297)
      at org.apache.catalina.core.StandardServer.destroyInternal(StandardServer.java:877)
      at org.apache.catalina.util.LifecycleBase.destroy(LifecycleBase.java:297)
      at org.apache.catalina.startup.Catalina.start(Catalina.java:633)
      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:351)
      at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:485)
  </code></pre>
  
  <p>From what I read problem might be related to version issue of <code>servlet-api.jar</code> which is included in my <code>pom.xml</code> however I thought that adding <code>scope:provided</code> should solve the issue (It does not).</p>
  
  <p>Can anyone give me a hint what I am doing wrong? </p>