You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

从Eclipse转Intellij后,RestService WAR本地正常远程Tomcat报404

刚从Eclipse转IntelliJ确实容易踩这类配置坑,我帮你梳理几个最可能的原因,你挨个排查下:

1. 检查IntelliJ的WAR打包完整性

Eclipse默认会把所有依赖打包进WAR,但IntelliJ的默认配置可能只包含项目自身代码,导致远程部署时缺失依赖:

  • 打开File → Project Structure → Artifacts,查看你的WAR artifact配置:
    • 确认Output Layout里存在WEB-INF/lib目录,且所有项目依赖都被添加进去(右键依赖选择Put into Output Root)
    • 检查WEB-INF/web.xml是否在正确路径下,没有被遗漏
2. 上下文路径不匹配

IDE内部署时IntelliJ可能帮你设置了自定义上下文路径(比如根路径/),但远程Tomcat默认会用WAR包文件名作为上下文路径:

  • 比如IDE里访问http://localhost:8080/api/xxx,远程WAR名为myapp.war时,需要访问http://remote-server:8080/myapp/api/xxx
  • 想保持根路径的话,可将WAR重命名为ROOT.war,或在Tomcatconf/server.xml里配置<Context>节点指定路径
3. 编译JDK版本与远程Tomcat不兼容

远程Tomcat对JDK版本有要求(比如Tomcat 8.5仅支持JDK 8+),如果IntelliJ用更高版本编译,会导致部署失败:

  • 检查IntelliJ配置:File → Project Structure → Project,确认Project SDK和Project language level与远程服务器JDK版本一致(远程执行java -version查看)
4. Web资源路径配置差异

Eclipse和IntelliJ对Web资源(静态文件、JSP等)的默认路径处理不同:

  • 打开Project Structure → Modules,选中Web模块,检查Web标签页的Web Resource Directories是否正确配置,确保所有需要的资源都被包含到WAR中
5. 手动执行完整构建命令

有时候IntelliJ的“Build Artifact”可能跳过部分构建步骤,导致WAR不完整:

  • 用终端手动执行构建命令:
    • Maven项目:mvn clean package
    • Gradle项目:gradle clean war
      再把生成的WAR包传到服务器尝试部署
6. 查看远程Tomcat日志定位问题

这是最直接的排查方式!去远程服务器Tomcat的logs目录,查看catalina.out或localhost.log:

  • 如果日志出现ClassNotFoundException,说明依赖没打包进WAR
  • 如果是ServletException,大概率是web.xml里的映射配置有误
  • 权限问题也会在日志里明确体现,比如Tomcat没有读取WAR包的权限

内容的提问来源于stack exchange,提问作者Jeremy Villa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 10:20:43