跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客GitHub 精选镜像AI 生图工具UI配色美学隐私政策关于联系
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
Javajava

IntelliJ IDEA 打包 Web 项目 WAR 包及 Tomcat 部署指南

IntelliJ IDEA 打包 Web 项目 WAR 包需配置 Artifacts 工件,添加 Web 根目录与 Module Output 以包含编译类文件。验证 WAR 包结构后,将其部署至 Tomcat webapps 目录并启动服务。常见问题包括依赖缺失导致 ClassNotFoundException、classes 目录为空或访问 404,可通过重新关联库文件、检查编译输出及核对访问路径解决。Maven 项目可直接使用 package 命令构建。

DebugKing发布于 2026/4/8更新于 2026/7/2041 浏览
IntelliJ IDEA 打包 Web 项目 WAR 包及 Tomcat 部署指南

在这里插入图片描述

一、引言

Web 项目 WAR 包打包常因步骤多、配置深而卡壳,且多数教程仅讲'打包'却忽略'部署验证'和'问题排查'。本文涵盖前置准备、核心配置、打包验证、Tomcat 部署及问题解决全流程。

二、前置准备:确认基础配置(避免起步就错)

在开始打包前,先检查 3 个关键前提,缺失任一环节可能导致后续操作失败:

  1. 确认项目类型:打开项目结构(快捷键 Shift+Ctrl+Alt+S),在「Modules」中查看模块类型是否为「Web Application」,若不是,需右键模块→「Add Framework Support」→勾选「Web Application」。
  2. 配置 JDK/SDK:在「Project Structure」→「Project」中,确认「Project SDK」已选择本地 JDK(建议 1.8 及以上),「Project language level」与 JDK 版本匹配(如 JDK 1.8 对应 level 8)。
  3. 准备 Tomcat(部署用):本地已安装 Tomcat(建议 8.x/9.x 版本),并记住其安装路径(如 D:\apache-tomcat-9.0.60),后续部署需用到。

三、核心配置:Artifacts 配置(打包关键步骤)

此模块是打包核心,按'新建工件→补全目录→关联编译输出'三步拆解,每步附操作目的,避免盲目点击:

3.1 新建 Web Archive 工件(即 WAR 包模板)
  1. 操作步骤:打开「Project Structure」→选择左侧「Artifacts」→点击界面左上角「+」号→依次选择「Web Application: Archive」→「Empty」。
  2. 操作目的:创建一个空的 WAR 包模板,后续将项目文件、编译结果逐步添加到该模板中。
3.2 配置 Web 根目录(确保页面文件能被访问)
  1. 操作步骤:在「Artifacts」右侧「Output Layout」面板中,右键「」→选择「Add Content Directory」→在弹窗中选中项目的 Web 根目录(通常名为 WebContent 或 webapp,需包含 index.html、WEB-INF 文件夹)。
  2. 操作目的:Web 根目录是项目对外访问的入口,缺失会导致部署后无法找到页面(如 index.html)。
3.3 补全 WEB-INF/classes 目录(存放编译后的代码)
  1. 操作步骤:
    • 在「Output Layout」面板中,展开已添加的 Web 根目录→找到「WEB-INF」文件夹(若没有则右键 Web 根目录→「New Folder」创建)。
    • 右键「WEB-INF」→「New Folder」→命名为 classes(必须小写,Web 项目标准目录)。
  2. 操作目的:classes 目录用于存放项目编译后的 .class 文件(如 Controller、Service 类),缺失会导致 Tomcat 无法加载业务逻辑代码。
3.4 关联 Module Output(自动导入编译结果)
  1. 操作步骤:在「Output Layout」面板中,右键「classes」目录→选择「Add Module Output」→在弹窗中选择当前 Web 项目的模块(如 demo-web)→点击「OK」。
  2. 操作目的:将项目编译后的 .class 文件自动同步到 classes 目录,无需手动复制,避免遗漏文件。

四、打包与验证:确保 WAR 包可用

4.1 执行打包操作
  1. 操作步骤:点击顶部菜单栏「Build」→「Build Artifacts」→在弹窗中选择已配置的 Artifact(如 unnamed:war)→选择「Build」(首次打包)或「Rebuild」(更新后重新打包)。
  2. 查找 WAR 包:打包完成后,WAR 包默认存放在项目根目录下的 out\artifacts\ 文件夹中(如 demo\out\artifacts\unnamed.war)。
4.2 验证 WAR 包有效性(避免白忙活)
  1. 验证方法:用压缩软件(如 WinRAR)打开 WAR 包,检查以下 3 点:
    • 根目录下是否有 index.html 等页面文件。
    • WEB-INF 文件夹下是否有 classes 目录,且 classes 内有 .class 文件。
    • WEB-INF 文件夹下是否有 web.xml(若项目用注解配置则可无,但传统项目需包含)。
  2. 验证目的:提前排查打包缺陷,避免带着问题去部署,减少后续排错时间。

五、Tomcat 部署:从打包到访问全流程

  1. 部署步骤:
    • 将验证通过的 WAR 包复制到 Tomcat 的 webapps 目录下(如 D:\apache-tomcat-9.0.60\webapps)。
    • 进入 Tomcat 的 bin 目录,双击 startup.bat(Windows)或执行 ./startup.sh(Linux/Mac)启动 Tomcat。
    • 访问测试:打开浏览器,输入 http://localhost:8080/[WAR 包名]/index.html(如 WAR 包名为 demo.war,则路径为 http://localhost:8080/demo/index.html),能正常显示页面即部署成功。
  2. 注意事项:若 Tomcat 启动失败,可查看 logs 目录下的 catalina.out 文件,排查端口占用、依赖冲突等问题。

六、常见问题解决方案(打包/部署高频坑)

6.1 问题 1:WAR 包内无 lib 依赖(第三方 jar 缺失)
  • 现象:部署后报错'ClassNotFoundException'(找不到 Spring、MyBatis 等依赖类)。
  • 原因:Artifacts 配置中未添加项目依赖的库文件。
  • 解决方案:在「Artifacts」→「Output Layout」中,右键「WEB-INF」→选择「Add Library Files」→勾选项目依赖的库(如 Spring Core、MyBatis)→点击「OK」,重新打包。
6.2 问题 2:classes 目录为空(无 .class 文件)
  • 现象:打开 WAR 包,WEB-INF/classes 目录下无任何文件。
  • 原因:未关联 Module Output,或代码未编译。
  • 解决方案:
    1. 重新执行「3.4 关联 Module Output」步骤,确认模块选择正确。
    2. 先执行「Build」→「Rebuild Project」编译项目,再重新打包。
6.3 问题 3:部署后访问 404(页面找不到)
  • 现象:浏览器输入地址后显示'404 Not Found'。
  • 原因:WAR 包未被 Tomcat 解压,或访问路径错误,或 Tomcat 端口被占用。
  • 解决方案:
    1. 检查 webapps 目录:启动 Tomcat 后,若 WAR 包未自动解压(无同名文件夹),删除 WAR 包,重启 Tomcat 重试。
    2. 核对访问路径:确保路径中包含 WAR 包名(如 http://localhost:8080/demo/index.html,而非 http://localhost:8080/index.html)。
    3. 检查端口:打开 conf/server.xml 文件,查看 <Connector port="8080" 是否被占用,若占用则修改端口(如改为 8081),重启 Tomcat。

七、场景扩展:适配 Maven/多模块项目

7.1 Maven 项目打包(更简洁,无需手动配置 Artifacts)
  1. 操作步骤:打开右侧「Maven」面板→展开项目→「Lifecycle」→双击「package」,Maven 会自动编译、打包,WAR 包存放在 target 目录下。

自定义配置:若需修改 WAR 包名称,在 pom.xml 中添加:

<build><finalName>my-demo</finalName><!-- 自定义 WAR 包名 --></build>
7.2 多模块项目打包(仅打包 Web 模块)
  • 操作要点:多模块项目(如 demo-parent 下有 demo-service、demo-web),仅需对 demo-web 模块(Web 类型)执行上述打包步骤,无需处理父模块或服务模块。

八、总结

本文覆盖 WAR 包配置、打包、验证、部署及排错全流程,核心是确保「Artifacts 配置完整」和「提前验证打包结果」。

目录

  1. 一、引言
  2. 二、前置准备:确认基础配置(避免起步就错)
  3. 三、核心配置:Artifacts 配置(打包关键步骤)
  4. 3.1 新建 Web Archive 工件(即 WAR 包模板)
  5. 3.2 配置 Web 根目录(确保页面文件能被访问)
  6. 3.3 补全 WEB-INF/classes 目录(存放编译后的代码)
  7. 3.4 关联 Module Output(自动导入编译结果)
  8. 四、打包与验证:确保 WAR 包可用
  9. 4.1 执行打包操作
  10. 4.2 验证 WAR 包有效性(避免白忙活)
  11. 五、Tomcat 部署:从打包到访问全流程
  12. 六、常见问题解决方案(打包/部署高频坑)
  13. 6.1 问题 1:WAR 包内无 lib 依赖(第三方 jar 缺失)
  14. 6.2 问题 2:classes 目录为空(无 .class 文件)
  15. 6.3 问题 3:部署后访问 404(页面找不到)
  16. 七、场景扩展:适配 Maven/多模块项目
  17. 7.1 Maven 项目打包(更简洁,无需手动配置 Artifacts)
  18. 7.2 多模块项目打包(仅打包 Web 模块)
  19. 八、总结
  • 免费图片AI生成工具免费生成了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 免费图片视频在线生成30秒,将你的创意变成现实开始设计
  • X/Twitter免费视频下载器免登陆无限额度免费视频解析下载了解详情
  • 100+免费在线小游戏爽一把
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • 前端流式输出实现详解:从原理到实践
  • Spring Cloud Gateway 核心机制与实战总结
  • IDEA 中 Module 依赖 JAR 失效及优先使用 Module 编译的处理方法
  • AI辅助开发实战:如何用AIGC LLM提升代码生成效率与质量
  • WebSocket 与 WebRTC:Web 实时通信与音视频通信实战
  • 鸿蒙电商购物车实战:用户管理、商品列表与购物车功能实现
  • 牛客 NC221681 dd 爱框框 滑动窗口解法
  • 贪婪搜索算法:核心原理、适用场景与局限性
  • 使用 AI 工具快速生成专业架构图的几种方法
  • Python asyncio 异步编程核心指南
  • 本地化知识库问答系统搭建指南:支持 PDF Word 检索与实时对话
  • Spring Boot Starter 自定义开发与企业级组件库构建
  • 华为 OD 面试:C++ 核心基础知识点梳理
  • Android 校招面试经验总结:Java 基础与系统原理
  • GitHub Copilot 使用体验与实战场景分析
  • Flutter 三方库 discord_interactions 的鸿蒙化适配指南
  • 利用程序员技能进行语音识别和自然语言处理
  • 云开发 Copilot:AI 如何重塑低代码开发流程
  • 深入理解 HTML DOM 中的 nodeType 属性
  • 构建医疗 AI 数据集建设平台:Go 语言工程方案详解

相关免费在线工具

  • Keycode 信息

    查找任何按下的键的javascript键代码、代码、位置和修饰符。 在线工具,Keycode 信息在线工具,online

  • Escape 与 Native 编解码

    JavaScript 字符串转义/反转义;Java 风格 \uXXXX(Native2Ascii)编码与解码。 在线工具,Escape 与 Native 编解码在线工具,online

  • JavaScript / HTML 格式化

    使用 Prettier 在浏览器内格式化 JavaScript 或 HTML 片段。 在线工具,JavaScript / HTML 格式化在线工具,online

  • JavaScript 压缩与混淆

    Terser 压缩、变量名混淆,或 javascript-obfuscator 高强度混淆(体积会增大)。 在线工具,JavaScript 压缩与混淆在线工具,online

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online