springboot 项目在IDEA 可以正常访问 接口和静态页面,打包放到tomcat出错

图片说明
10-Aug-2018 16:42:21.421 严重 [localhost-startStop-3] org.apache.catalina.startup.HostConfig.deployWAR Error deploying web application archive [D:\Apache\apache\webapps\QClub.war]
java.lang.IllegalStateException: ContainerBase.addChild: start: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/QClub]]
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:758)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:730)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:734)
at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:985)
at org.apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.java:1857)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
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)

springboot自带tomcat可以不用外部tomcat直接运行

https://blog.csdn.net/Glory_mm/article/details/75671458
这篇文章看一下。应该是tomcat中jar文件冲突问题。

这种情况一般是,没有屏蔽掉springboot的内嵌tomcat或者没有屏蔽掉比如jsp或servlet这样jar文件的原因,你可以搜索一下外部tomcat部署springboot项目,里面有详细的步骤可以参考一下。

是用的maven 还是gradle构建工具?
maven 记得添加 plugin spring-boot-maven-plugin
同时packaging要设为war


 <build>
   <plugins>

      <!-- 用于生成 Spring boot的可执行jar/war包的插件 -->
      <plugin>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-maven-plugin</artifactId>
      </plugin>
    </plugins>
  </build>

外部容器运行spring-boot项目,只需要在原项目上做两件事

1、在pom.xml中排除org.springframework.boot的内置tomcat容器
<!-- spring-boot web -->

org.springframework.boot
spring-boot-starter-web



org.springframework.boot
spring-boot-starter-tomcat


2、spring-boot入口实现SpringBootServletInitializer接口

    public class Application extends SpringBootServletInitializer{}

补充:SpringBootServletInitializer接口依赖javax.servlet包,需要在pom.xml中引入该包

以上说法全部试验过,都不能解决问题