war包部署,Linux系统报错,Windows系统正常

1,522 阅读2分钟

1. 场景还原

开发环境
系统:Windows 10
开发工具:Eclipse
JDK版本:1.8
Tomcat版本:7.0
Maven版本:3.9

部署环境
系统:CentOS 7.6
Tomcat版本:7.0
JDK版本:1.8
Tomcat版本:7.0
BT控制面板:6.9.8

2. 问题描述

本地测试:项目开发好后,使用Maven进行打包,在本地(Windows)测试,正常。 部署线上:将产生的war包上传到Windows Server系统,Tomcat安装目录下的webapps文件夹下,访问项目地址,出现Tomcat欢迎页,访问登录地址,正常。 部署线上:将产生的war包上传到CentOS7系统,Tomcat安装目录下的webapps文件夹下,访问项目地址,出现Tomcat欢迎页,访问登录地址,报404错误。

可以访问欢迎页

404错误

查看日志打印,出现 java.util.zip.ZipException: error in opening zip file 异常

日志打印

3. 解决思路

  1. 排除路由原因:本地访问正常,说明程序路由没有问题,不是程序Bug引起
  2. 排除端口原因:欢迎页可以访问,说明服务器端口的安全组已添加,BT防火墙的端口已打开
  3. 查看日志:使用tail -f catalina.out命令查看日志信息,如有报错,根据报错信息查询。如:(CentOS7部署war包 报java.util.zip.ZipException: error in opening zip file)

4. 可能原因

4.1 以ASCII上传导致:上传的时候选择了以ASCII上传,所以出现了这个问题,不要选择以ASCII方式上传即可
4.2 未关闭Tomcat就上传war包导致:上传之前一定要先关闭tomcat,再上传,然后再启动tomcat
4.3 Maven编译导致:删除maven的资源库中所有的jar包,然后重新通过maven编译项目

5. 解决办法

经过测试,最终定位到是 4.2 未关闭Tomcat就上传war包导致:上传之前一定要先关闭tomcat,再上传,然后再启动tomcat
不要在tomcat正在运行的时候向它的webapps文件夹上传war包,比如用ftps工具上传,上传之前一定要先关闭tomcat,再上传,然后再启动tomcat

6. 心得体会

奇葩Bug年年有,只是今天特别多!