Tomcat部署WAR包至另一台电脑后出现HTTP Status 404 - Not Found问题
兄弟,第一次做Web应用就碰到跨系统部署的小坑太正常了,咱们一步步来定位问题:
先核对核心环境一致性
先确认Windows7上的Tomcat版本和你Windows10上的是不是完全相同(比如都是Tomcat 9.0.73,别一个是9.0.x一个是9.1.x)。然后检查JDK版本:Tomcat 9要求JDK 8及以上,两台电脑的JDK版本必须匹配,不能一个用JDK11一个用JDK7——版本差太多会直接导致应用加载失败。可以在两台电脑上分别运行java -version和javac -version确认。检查WAR包的部署状态
把WAR包放到Windows7的Tomcatwebapps目录后,启动Tomcat,看看有没有自动解压出同名的文件夹?如果没解压,大概率是权限问题:Windows7的用户权限可能不够,Tomcat没权限写入文件来解压WAR。解决办法很简单:手动把WAR包解压到webapps下的同名文件夹(比如myapp.war解压成myapp文件夹),然后重启Tomcat。确认访问路径是否正确
回忆你在Windows10上的访问路径,比如http://localhost:8080/你的应用名。Windows7上要注意两个点:- Tomcat端口是不是还是8080?可以打开
conf/server.xml看<Connector port="8080"/>的配置 - WAR包的名字就是应用的上下文路径,比如WAR叫
demo.war,访问路径就是/demo,别输错名字
- Tomcat端口是不是还是8080?可以打开
查看Tomcat日志找关键线索
这是最核心的一步!去Windows7的Tomcatlogs目录,打开localhost.log或者catalina.out(如果存在的话),看Tomcat启动时的报错信息:- 有没有
ClassNotFoundException?可能是某个依赖没打包进WAR包 - 有没有文件读取失败?比如你应用里硬编码了Windows10的本地路径(比如
C:\Users\XXX\files),Windows7上没有这个路径 - 有没有配置文件加载错误?比如
web.xml里的配置在Windows7环境下不兼容
- 有没有
检查WAR包完整性
复制到Windows7的WAR包可能中途损坏了,对比两台电脑上WAR包的文件大小,或者回到IntelliJ重新生成WAR包,再复制过去试试。排除权限/防火墙干扰
虽然默认应用能访问,但可以临时关闭Windows7的防火墙和杀毒软件,试试能不能访问你的应用——有时候杀毒软件会拦截Tomcat的文件写入或者请求。
如果按上面的步骤排查,应该能找到问题所在,毕竟默认应用能跑,说明Tomcat本身是正常的,就是你的应用在Windows7环境下的部署或兼容性出了小问题。
内容的提问来源于stack exchange,提问作者Khalanirek

