把spring-boot项目部署到tomcat容器中出错的解决方式

有没有出现过这种问题
ContainerBase.addChild: start:org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/struts]]
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:154)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:725)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:701)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:717)
at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:1101)
at org.apache.catalina.startup.HostConfig D e p l o y D i r e c t o r y . r u n ( H o s t C o n f i g . j a v a : 1786 ) a t j a v a . u t i l . c o n c u r r e n t . E x e c u t o r s DeployDirectory.run(HostConfig.java:1786) at java.util.concurrent.Executors DeployDirectory.run(HostConfig.java:1786)atjava.util.concurrent.ExecutorsRunnableAdapter.call(Unknown Source)
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)

java.util.zip.ZipException: invalid LOC header (bad signature)
at java.util.zip.ZipFile.read(Native Method)
at java.util.zip.ZipFile.access 1400 ( Z i p F i l e . j a v a : 60 ) a t j a v a . u t i l . z i p . Z i p F i l e 1400(ZipFile.java:60) at java.util.zip.ZipFile 1400(ZipFile.java:60)atjava.util.zip.ZipFileZipFileInputStream.read(ZipFile.java:734)
at java.util.zip.ZipFile Z i p F i l e I n f l a t e r I n p u t S t r e a m . f i l l ( Z i p F i l e . j a v a : 434 ) a t j a v a . u t i l . z i p . I n f l a t e r I n p u t S t r e a m . r e a d ( I n f l a t e r I n p u t S t r e a m . j a v a : 158 ) a t j a v a . i o . B u f f e r e d I n p u t S t r e a m . f i l l ( B u f f e r e d I n p u t S t r e a m . j a v a : 246 ) a t j a v a . i o . B u f f e r e d I n p u t S t r e a m . r e a d ( B u f f e r e d I n p u t S t r e a m . j a v a : 265 ) a t j a v a . i o . D a t a I n p u t S t r e a m . r e a d I n t ( D a t a I n p u t S t r e a m . j a v a : 387 ) a t o r g . a p a c h e . t o m c a t . u t i l . b c e l . c l a s s f i l e . C l a s s P a r s e r . r e a d I D ( C l a s s P a r s e r . j a v a : 199 ) a t o r g . a p a c h e . t o m c a t . u t i l . b c e l . c l a s s f i l e . C l a s s P a r s e r . p a r s e ( C l a s s P a r s e r . j a v a : 78 ) a t o r g . a p a c h e . c a t a l i n a . s t a r t u p . C o n t e x t C o n f i g . p r o c e s s A n n o t a t i o n s S t r e a m ( C o n t e x t C o n f i g . j a v a : 2119 ) a t o r g . a p a c h e . c a t a l i n a . s t a r t u p . C o n t e x t C o n f i g . p r o c e s s A n n o t a t i o n s J a r ( C o n t e x t C o n f i g . j a v a : 1981 ) a t o r g . a p a c h e . c a t a l i n a . s t a r t u p . C o n t e x t C o n f i g . p r o c e s s A n n o t a t i o n s U r l ( C o n t e x t C o n f i g . j a v a : 1942 ) a t o r g . a p a c h e . c a t a l i n a . s t a r t u p . C o n t e x t C o n f i g . p r o c e s s A n n o t a t i o n s ( C o n t e x t C o n f i g . j a v a : 1927 ) a t o r g . a p a c h e . c a t a l i n a . s t a r t u p . C o n t e x t C o n f i g . p r o c e s s C l a s s e s ( C o n t e x t C o n f i g . j a v a : 1406 ) a t o r g . a p a c h e . c a t a l i n a . s t a r t u p . C o n t e x t C o n f i g . w e b C o n f i g ( C o n t e x t C o n f i g . j a v a : 1278 ) a t o r g . a p a c h e . c a t a l i n a . s t a r t u p . C o n t e x t C o n f i g . c o n f i g u r e S t a r t ( C o n t e x t C o n f i g . j a v a : 881 ) a t o r g . a p a c h e . c a t a l i n a . s t a r t u p . C o n t e x t C o n f i g . l i f e c y c l e E v e n t ( C o n t e x t C o n f i g . j a v a : 388 ) a t o r g . a p a c h e . c a t a l i n a . u t i l . L i f e c y c l e S u p p o r t . f i r e L i f e c y c l e E v e n t ( L i f e c y c l e S u p p o r t . j a v a : 117 ) a t o r g . a p a c h e . c a t a l i n a . u t i l . L i f e c y c l e B a s e . f i r e L i f e c y c l e E v e n t ( L i f e c y c l e B a s e . j a v a : 90 ) a t o r g . a p a c h e . c a t a l i n a . c o r e . S t a n d a r d C o n t e x t . s t a r t I n t e r n a l ( S t a n d a r d C o n t e x t . j a v a : 5590 ) a t o r g . a p a c h e . c a t a l i n a . u t i l . L i f e c y c l e B a s e . s t a r t ( L i f e c y c l e B a s e . j a v a : 145 ) a t o r g . a p a c h e . c a t a l i n a . c o r e . C o n t a i n e r B a s e . a d d C h i l d I n t e r n a l ( C o n t a i n e r B a s e . j a v a : 1018 ) a t o r g . a p a c h e . c a t a l i n a . c o r e . C o n t a i n e r B a s e . a d d C h i l d ( C o n t a i n e r B a s e . j a v a : 994 ) a t o r g . a p a c h e . c a t a l i n a . c o r e . S t a n d a r d H o s t . a d d C h i l d ( S t a n d a r d H o s t . j a v a : 652 ) a t o r g . a p a c h e . c a t a l i n a . s t a r t u p . H o s t C o n f i g . d e p l o y W A R ( H o s t C o n f i g . j a v a : 1127 ) a t o r g . a p a c h e . c a t a l i n a . s t a r t u p . H o s t C o n f i g ZipFileInflaterInputStream.fill(ZipFile.java:434) at java.util.zip.InflaterInputStream.read(InflaterInputStream.java:158) at java.io.BufferedInputStream.fill(BufferedInputStream.java:246) at java.io.BufferedInputStream.read(BufferedInputStream.java:265) at java.io.DataInputStream.readInt(DataInputStream.java:387) at org.apache.tomcat.util.bcel.classfile.ClassParser.readID(ClassParser.java:199) at org.apache.tomcat.util.bcel.classfile.ClassParser.parse(ClassParser.java:78) at org.apache.catalina.startup.ContextConfig.processAnnotationsStream(ContextConfig.java:2119) at org.apache.catalina.startup.ContextConfig.processAnnotationsJar(ContextConfig.java:1981) at org.apache.catalina.startup.ContextConfig.processAnnotationsUrl(ContextConfig.java:1942) at org.apache.catalina.startup.ContextConfig.processAnnotations(ContextConfig.java:1927) at org.apache.catalina.startup.ContextConfig.processClasses(ContextConfig.java:1406) at org.apache.catalina.startup.ContextConfig.webConfig(ContextConfig.java:1278) at org.apache.catalina.startup.ContextConfig.configureStart(ContextConfig.java:881) at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:388) 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:5590) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:145) at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:1018) at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:994) at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:652) at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:1127) at org.apache.catalina.startup.HostConfig ZipFileInflaterInputStream.fill(ZipFile.java:434)atjava.util.zip.InflaterInputStream.read(InflaterInputStream.java:158)atjava.io.BufferedInputStream.fill(BufferedInputStream.java:246)atjava.io.BufferedInputStream.read(BufferedInputStream.java:265)atjava.io.DataInputStream.readInt(DataInputStream.java:387)atorg.apache.tomcat.util.bcel.classfile.ClassParser.readID(ClassParser.java:199)atorg.apache.tomcat.util.bcel.classfile.ClassParser.parse(ClassParser.java:78)atorg.apache.catalina.startup.ContextConfig.processAnnotationsStream(ContextConfig.java:2119)atorg.apache.catalina.startup.ContextConfig.processAnnotationsJar(ContextConfig.java:1981)atorg.apache.catalina.startup.ContextConfig.processAnnotationsUrl(ContextConfig.java:1942)atorg.apache.catalina.startup.ContextConfig.processAnnotations(ContextConfig.java:1927)atorg.apache.catalina.startup.ContextConfig.processClasses(ContextConfig.java:1406)atorg.apache.catalina.startup.ContextConfig.webConfig(ContextConfig.java:1278)atorg.apache.catalina.startup.ContextConfig.configureStart(ContextConfig.java:881)atorg.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:388)atorg.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:117)atorg.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:90)atorg.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5590)atorg.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:145)atorg.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:1018)atorg.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:994)atorg.apache.catalina.core.StandardHost.addChild(StandardHost.java:652)atorg.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:1127)atorg.apache.catalina.startup.HostConfigDeployWar.run(HostConfig.java:2021)
at java.util.concurrent.Executors R u n n a b l e A d a p t e r . c a l l ( E x e c u t o r s . j a v a : 511 ) a t j a v a . u t i l . c o n c u r r e n t . F u t u r e T a s k . r u n ( F u t u r e T a s k . j a v a : 266 ) a t j a v a . u t i l . c o n c u r r e n t . T h r e a d P o o l E x e c u t o r . r u n W o r k e r ( T h r e a d P o o l E x e c u t o r . j a v a : 1149 ) a t j a v a . u t i l . c o n c u r r e n t . T h r e a d P o o l E x e c u t o r RunnableAdapter.call(Executors.java:511) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor RunnableAdapter.call(Executors.java:511)atjava.util.concurrent.FutureTask.run(FutureTask.java:266)atjava.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)atjava.util.concurrent.ThreadPoolExecutorWorker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)

可以试试如下的解决方法:
1、修改启动类,并重写初始化方法
我们平常用main方法启动的方式,都有一个App的启动类,代码如下:

@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}

我们需要类似于web.xml的配置方式来启动spring上下文了,在Application类的同级添加一个SpringBootStartApplication类,其代码如下:

/**

  • 修改启动类,继承 SpringBootServletInitializer 并重写 configure 方法
    */
    public class SpringBootStartApplication extends SpringBootServletInitializer {

    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
    // 注意这里要指向原先用main方法执行的Application启动类
    return builder.sources(Application.class);
    }
    }

2、在pom里面加上scope属性provided,避免jar包冲突
在这里插入图片描述
3、移除嵌入式tomcat插件
在这里插入图片描述

更多详情见 https://blog.csdn.net/javahighness/article/details/52515226

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值