You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

基于Java的Web项目Eclipse直接运行正常,部署WAR包至webapps后报404错误

解决Eclipse运行正常但Tomcat部署WAR包后全404的问题

这种情况我之前也碰到过,大概率是部署过程中的路径、包完整性或者配置问题,一步步排查应该能解决:

  • 确认WAR包是否被Tomcat正确解压
    先去Tomcat的webapps目录看看,你的WAR包是不是已经自动解压成对应的文件夹了?如果没解压,要么是WAR包本身损坏,要么Tomcat没有该目录的写入权限。可以手动用解压工具打开WAR包,对比Eclipse项目的输出结构——比如WEB-INF下的classes编译文件、lib依赖包是否齐全,静态资源(CSS/JS/图片)有没有缺失。

  • 检查上下文路径是否匹配
    在Eclipse里运行时,你可能给项目设置了自定义上下文路径(比如直接用根路径/),但Tomcat默认会把WAR包的文件名作为上下文路径。举个例子:如果你的WAR包叫my-web-app.war,那部署后的访问路径应该是http://localhost:8080/my-web-app/,而不是Eclipse里的http://localhost:8080/
    如果你想沿用根路径,可以修改Tomcat的conf/server.xml,在<Host>标签内添加<Context>配置:

    <Context path="/" docBase="my-web-app" reloadable="true"/>
    

    注意不要和webapps下的其他项目冲突。

  • 验证项目的路径配置与部署描述符
    首先检查WEB-INF/web.xml里的欢迎页配置,确保<welcome-file-list>里的文件确实存在于项目根目录:

    <welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
        <welcome-file>index.html</welcome-file>
    </welcome-file-list>
    

    另外,项目内的链接如果用了硬编码的绝对路径(比如/user/list),在非根上下文路径的情况下会找不到资源。建议改用相对路径或者通过EL表达式动态获取上下文路径:

    <a href="${pageContext.request.contextPath}/user/list">用户列表</a>
    
  • 查看Tomcat日志定位深层问题
    别忽略Tomcat的日志!去Tomcat/logs目录下查看catalina.outlocalhost.log和访问日志localhost_access_log.*.txt,里面可能会隐藏真正的错误原因——比如某个依赖包缺失、类加载失败、Servlet初始化异常等,这些问题都会导致项目未正常启动,表面表现为全404。

  • 对比Eclipse与Tomcat的运行环境
    确认Eclipse使用的JDK、Tomcat版本和部署的Tomcat环境是否一致?版本差异可能引发兼容性问题。另外,检查Eclipse的项目构建配置:是否所有依赖都被正确打包到WAR包中?有些外部依赖可能在Eclipse里是引用状态,但打包时未被包含,导致Tomcat运行时找不到类。

内容的提问来源于stack exchange,提问作者sachin kumar

火山引擎 最新活动