【tomcat部署前台war包报错】
tomcat部署前台war包报错
背景:tomcat启动前台war包,由zip直接改文件后缀成war包,jdk8 同事好使,我不好使
部署平台日志:
报错一、正常tomcat执行时会把war包解压成对应文件夹,这里应该是没解压成功。没有具体报错
SEVERE:ContainerBase.addChild:start:LifecycleException:Errorinitializaing:java.lang.NullPointerExceptionatorg.apache.catalina.core.StandardContext.start(StandardContext.java:4451)atorg.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:799)atorg.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:779)atorg.apache.catalina.core.StandardHost.addChild(StandardHost.java:601)atorg.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:943)atorg.apache.catalina.startup.HostConfig.deployWARs(HostConfig.java:778)atorg.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:504)atorg.apache.catalina.startup.HostConfig.check(HostConfig.java:1385)atorg.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:306)atorg.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:142)atorg.apache.catalina.core.ContainerBase.backgroundProcess(ContainerBase.java:1389)atorg.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1653)atorg.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1662)atorg.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.run(ContainerBase.java:1642)atjava.lang.Thread.run(Thread.java:662)May20,20265:27:15PMorg.apache.catalina.startup.HostConfigdeployWARSEVERE:Errordeploying web application archive integratebusi-ui.warjava.lang.IllegalStateException:ContainerBase.addChild:start:LifecycleException:Errorinitializaing:java.lang.NullPointerExceptionatorg.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:803)atorg.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:779)atorg.apache.catalina.core.StandardHost.addChild(StandardHost.java:601)atorg.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:943)atorg.apache.catalina.startup.HostConfig.deployWARs(HostConfig.java:778)atorg.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:504)atorg.apache.catalina.startup.HostConfig.check(HostConfig.java:1385)atorg.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:306)atorg.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:142)atorg.apache.catalina.core.ContainerBase.backgroundProcess(ContainerBase.java:1389)atorg.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1653)atorg.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1662)atorg.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.run(ContainerBase.java:1642)atjava.lang.Thread.run(Thread.java:662)本地部署日志
报错二、本地安装启动tomcat,启动时报错,意思就是war包有中文、特殊字符
Causedby:java.lang.IllegalArgumentException:MALFORMED调试过程
- 本地安装tomcat,放入war包启动报错
- 放入文件夹可以访问
- 定位问题是war包解压成文件夹期间出现问题,怀疑过压缩时文件损害,不过单独文件夹好用并且使用7-zip操作正常
- 最后通过报错二排查,删除包中中文文件解决;根本问题字符集问题部署平台jdk是8,8只支持DOS/GBK,而我们直接改后缀字符集是utf-8,因此读取报错!
前台zip转换成war包最靠谱方法
cd dist
jar -cvfM dist.zip
ren dist.zip dist-ui.war
