刚开始搞 Java Web 项目的人几乎都会问同一个问题IDEA 到底内置了 JDK 和 Maven 没有装完 IDEA 是不是就能直接建项目、直接跑起来了这个问题听起来简单但真回答起来有点绕——新版 IDEA 确实能帮你“自动下载” JDK也自带一个捆绑版的 Maven但它们又不完全是“内置”概念里那种开箱即用。我说直白一点IDEA 只是一个开发环境JDK 是项目的运行引擎Maven 是项目的构建工具想让项目稳定跑起来最靠谱的做法还是自己动手装一遍、配一遍。这篇就把概念拆清楚再把从零到跑通一个 Java Web 项目的完整流程给你捋一遍适合刚入门、以及装了好几次环境变量都报错的新手。1. 先说结论IDEA 默认不内置 JDK 和 Maven但新版能帮你“拉”一个1.1 JDK 是引擎IDEA 只是编辑器打个不太严谨但很好懂的比方IDEA 就像一套带界面、带快捷键的“厨房”而 JDK 才是锅碗瓢盆和煤气灶。你可以在 IDEA 里写代码、跳转、搜文件名但真要“把代码编译成可运行的程序”靠的是 JDK 里的 javac 和 java 命令。IDEA 不会把 JDK 塞进安装包里原因也简单JDK 的版本太多了Oracle JDK、OpenJDK、Eclipse Temurin、Amazon Corretto……不同项目对 JDK 版本的要求还不一样IDEA 如果捆绑某个版本反而会给用户添乱。所以你在安装 IDEA 的时候它并不会顺手帮你装 JDK只会提示你“系统里没有可用的 JDK”或者干脆让你在新建项目时自己选。这个设计其实很合理。一个做企业级老项目的团队可能必须用 JDK 8一个新项目可能要用 JDK 17 甚至 JDK 21。IDEA 要是写死内置某个版本那这个工具就废了一半。它更愿意做一个“兼容各种 JDK”的壳让用户根据项目需求去指定。1.2 Maven 有捆绑版但别拿它当生产配置Maven 的情况稍微特殊一点。IDEA 安装之后在 Maven 设置里确实有一个 Bundled Maven 选项也就是说它自带了某个版本的 Maven 运行环境你什么都不装也能跑。但这不代表你就可以高枕无忧了。捆绑版 Maven 的 settings.xml 用的是默认配置本地仓库默认放在 C 盘用户目录下远程仓库用的是中央仓库地址在国内网络环境下下载依赖经常慢到怀疑人生。你在实际项目里遇到的“卡在下载依赖”“jar 包拉不下来”“构建超时”一半以上都是因为这个默认配置。所以我给所有新手的建议都是自己单独装一份 Maven改好镜像和本地仓库路径然后在 IDEA 里指定用自己这份。这个过程不复杂但也别跳过否则后面每一分钟都在跟下载问题作斗争。1.3 新版 IDEA 的“自动下载”到底是怎么回事很多人会发现在 New Project 界面里Project SDK 下拉框有个 Download JDK 选项勾了之后 IDEA 会自动下载一个 JDK。这确实很方便但它并不是把 JDK 打包进了 IDEA 安装目录而是 IDEA 按需从网络拉取一个 JDK 放到本地缓存目录里。Maven 也有类似逻辑新建项目的时候如果你没选它就用 Bundled Maven。这种“自动拉取”机制适合临时验证一个项目但我不建议作为主力方案。原因很简单自动下载的 JDK 放在 IDEA 的内部目录里不同版本的 IDEA 缓存目录可能不一样等你重装 IDEA、换版本或者切换盘符时这些 JDK 可能就找不到了。到时候你的项目 SDK 变成空的又得重新下载一遍。手动装到统一目录虽然多一点操作成本但稳定、可控项目换机器也容易说明白“依赖哪一套环境”。这也是我后面给操作步骤时全部采用“手动安装 手动配置”的原因。2. 环境搭建思路为什么必须先 JDK 再 Maven最后让 IDEA 认识它们2.1 三者的依赖关系Maven 本身就是 Java 写的先说一个很多人忽略的事实Maven 这个工具本身就是一个 Java 程序。它的启动脚本会去系统里找 JAVA_HOME然后通过 java 命令把 Maven 跑起来。换句话说如果你的 JDK 没装好、JAVA_HOME 没配好Maven 连启动都启动不了更别说帮你编译项目了。这就是为什么网上所有教程都告诉你“先装 JDK再装 Maven”这不是约定俗成而是硬逻辑依赖。IDEA 本身也有一点类似逻辑。IDEA 的界面和编辑器功能靠的是它自带的 JetBrains Runtime所以“打开 IDEA 软件”不需要你去配 JDK。但当你新建一个项目、要编译代码时IDEA 就要找一个 Project SDK 来做编译和运行。这个 SDK 可以是 IDEA 自动下载的也可以是你本机装的 JDK但前提是必须指定。所以完整链条是这样的JDK 是基础Maven 基于 JDK 运行IDEA 再调用 JDK 和 Maven 完成项目构建。弄懂这条链后面所有配置都不会乱。2.2 全局配置的完整地图既然要手动配置最好先对“哪些配置项是干什么的”有个整体认知。我直接列一个全景表你以后配置错了也能照着这个表定位问题配置项作用典型值JAVA_HOME给 Maven、Tomcat 等工具定位 JDK 根目录D:\Java\jdk-17PATH让系统命令能找到 java、javac、mvn%JAVA_HOME%\bin; D:\apache-maven-3.9.6\binMAVEN_HOME一些脚本用来定位 Maven 安装目录D:\apache-maven-3.9.6settings.xml 的 localRepository本地仓库存放所有下载的 jar 包D:\maven_reposettings.xml 的 mirror远程仓库加速镜像解决下载慢问题阿里云仓库地址IDEA Project SDK指定编译运行项目用的 JDKD:\Java\jdk-17IDEA Maven Home Path指定 IDEA 调用哪个 MavenD:\apache-maven-3.9.6这张表里最关键的是 JAVA_HOME 和 settings.xml 里的配置。JAVA_HOME 一旦配错后面 IDA 和 Maven 全都会报“找不到 Java”。settings.xml 则是 Maven 的灵魂项目下载依赖的路径、镜像、私服地址都写在里面。我在实际排查中看到最快的环境翻车原因十个里有七个是这两项没弄对。2.3 版本怎么选才不打架另一个高频翻车点是版本匹配。JDK 17 的项目如果在老版本 IDEA比如 2020 版本里打开IDEA 可能直接不支持连编译按钮都是灰的。Maven 版本太旧也可能解析不了新语法。这里给一个保守且稳妥的选型思路照着选基本不会出问题项目类型JDK 版本Maven 版本建议 IDEA 版本老企业项目JDK 8Maven 3.6.xIDEA 2021.x 及以上新 Java Web 项目JDK 17Maven 3.8.x / 3.9.xIDEA 2022.3 及以上尝鲜 / 完全新项目JDK 21Maven 3.9.xIDEA 2023.1 及以上补充说明一下JDK 8 是最后一个可用的“老牌 LTS”大量银行、运营商的老系统还用它但是新项目我不建议再选 8除非公司有硬性要求。JDK 17 是目前企业接收度最高的版本Java 17 的语法糖、性能收益都很明显Spring Boot 3.x 也直接要求 JDK 17 起步。如果你只是自己学习选 JDK 21 问题也不大。唯一要记住的是选 JDK 之前先看 IDEA 版本IDEA 版本太老就先把 IDEA 升上去。3. 手把手配置实操从零到跑通一个 Java Web 项目3.1 下载安装 JDK并把环境变量一次配清楚先打开 JDK 下载页找到对应系统的安装包。我这边以 Windows 为例下载安装版 exe你下载时注意看系统位数一般选 x64 就对了。安装的时候别一路默认把安装路径改成D:\Java\jdk-17原因我之前说过带空格的路径比如C:\Program Files\Java\jdk-17在某些老脚本里容易出问题。装完之后JDK 会自动往 PATH 里加一条 bin 目录但 JAVA_HOME 这个变量需要你手动配因为 Maven、Tomcat 这些工具主要认的是 JAVA_HOME。配置环境变量的具体操作右键“此电脑”选“属性”进“高级系统设置”点“环境变量”。在系统变量区域点击“新建”变量名填JAVA_HOME变量值填D:\Java\jdk-17注意不要加 bin这里的值要指到 JDK 的根目录。然后在系统变量里找到 Path点“编辑”新建一条%JAVA_HOME%\bin。有人会问既然 JDK 安装时已经往 PATH 里写了原始路径为什么还要加%JAVA_HOME%\bin因为一旦你知道 JAVA_HOME 的存在以后升级 JDK 时只需要改 JAVA_HOME 一个地方PATH 里的原始路径反而是干扰项。稳妥的做法是把%JAVA_HOME%\bin移到 Path 列表的前面。配置完记得重新打开一个命令行窗口这一步几乎必做旧窗口不会加载新环境变量输入java -version和javac -version能正常打印版本信息就算第一步成功。我排查过很多“配置失败”的问题最后发现只是没重开命令行导致系统还没读到新环境变量白慌了半天。3.2 下载安装 Maven改好 settings.xml 再继续Maven 的下载比 JDK 简单去 Apache Maven 官网下载apache-maven-3.9.6-bin.zip这个压缩包。解压到一个干净目录比如D:\apache-maven-3.9.6接着还是打开环境变量设置新建系统变量MAVEN_HOME值填D:\apache-maven-3.9.6然后在 Path 里追加一条%MAVEN_HOME%\bin。重新开命令行窗口执行mvn -v如果能打印出 Maven 版本和 Java version 信息就说明 Maven 已经能正常借用你配好的 JDK 环境了。到这里还没完新装的 Maven 默认配置会让你在之后的项目里吃尽苦头。打开 Maven 安装目录里的conf/settings.xml先找到localRepository标签默认是被注释掉的放开注释并改成你想放 jar 包的目录我一般习惯用D:\maven_repo目录不存在时 Maven 会自动创建。然后找到mirrors标签在里面加一个阿里云仓库镜像mirror idaliyunmaven/id mirrorOfcentral/mirrorOf name阿里云公共仓库/name urlhttps://maven.aliyun.com/repository/public/url /mirror这段配置的作用是Maven 下载依赖时不再直接访问国外中央仓库而是走阿里云在国内的镜像速度提升非常明显。我见过太多人项目卡在下载依赖环节改完镜像后基本秒下。顺手说一句想查某个依赖的坐标和版本号可以访问 mvnrepository.com 这个网页入口搜到后直接把 dependency 代码复制进 pom.xml 就行。3.3 在 IDEA 里指定自己的 JDK 和 Maven打开 IDEA先进入 Project Structure左侧选 SDKs把本机的 JDK 手动添加进来。Mac 和 Linux 用户路径可能是/usr/lib/jvm/...或者用了 Homebrew 的/Library/Java/JavaVirtualMachines/...Windows 就是D:\Java\jdk-17。添加之后新建项目时 Project SDK 就能直接选到它。接着配置 Maven。进入 Settings搜索 Maven找到 Build Tools - Maven。在 Maven home path 选择你的 Maven 安装目录比如D:\apache-maven-3.9.6。下面的 User settings file 选到对应路径比如D:\apache-maven-3.9.6\conf\settings.xml。选完之后 Local repository 一般会自动更新成你在 settings.xml 里配置的目录如果没更新就手动指一下。点 Apply 之后IDEA 会基于这份配置重新加载。注意一点这些设置是全局的对所有项目生效。如果你想给某个特定项目用另一套 Maven 配置可以在项目的 Maven 设置里覆盖全局配置。不过对新手的建议是先统一全局别搞出多个仓库位置否则排查依赖缺失时你会怀疑人生。3.4 新建项目跑通第一个 Web 请求环境都配好之后来走一个完整的验证流程。新建一个 Spring Boot 项目这是目前 Java Web 项目最低成本跑通的方式因为内嵌了 Tomcat不用单独装服务器。在 IDEA 的 New Project 里选择 Spring Initializr设置项目名为 demo语言 Java类型 MavenJava 版本选 17。依赖管理选 Spring Web 就够了这会在 pom.xml 里自动引入 web 相关依赖。项目创建后IDEA 会执行 Maven 的加载流程第一次会把 Spring Boot 全家桶依赖拉到本地仓库这时你能直观感受到刚才配置镜像的速度优势。等右下角的进度条走完在项目里创建一个 Controller 类RestController public class HelloController { GetMapping(/hello) public String hello() { return Hello, Java Web!; } }然后直接运行主类。启动成功后打开浏览器访问http://localhost:8080/hello能看到返回的字符串就说明这条链路完全打通了IDAEA 负责写代码JDK 负责编译运行Maven 负责拉依赖和构建。很多人的 Web 环境第一次跑不通就是在前面某一步漏了比如 Maven 用了 Bundled 配置导致依赖下到 C 盘或者 Project SDK 没选导致编译失败。按上面流程走一遍基本不会出问题。4. 常见问题与排查技巧实录4.1 JDK 环境变量配置失败命令提示符里全是“不是内部或外部命令”这个问题我见过太多次先说最典型的症状你输入java -version或者mvn -v系统直接提示“不是内部或外部命令也不是可运行的程序或批处理文件”。排查顺序按这三步走第一确认 JAVA_HOME 的变量值有没有拼错比如D:\Java\jdk-17少了盘符、多了空格第二确认 Path 里加的是%JAVA_HOME%\bin而不是%JAVA_HOME%bin 目录漏掉的话系统根本找不到 java.exe第三确认命令行窗口是配置完环境变量之后重新打开的新窗口。最后再教你一招应急检查echo %JAVA_HOME%如果这一行输出的是变量名而不是路径说明变量值没设置成功。如果输出是路径但java -version还是失败再用where java看一下你实际调用的是哪个 java很有可能是曾经的安装残留抢先覆盖了。环境变量这块解决问题最快的方法永远是“逐项确认 新开窗口重测”别急着删除重装。4.2 IDEA 一直提示找不到 JDK怎么检查IDEA 提示找不到 JDK 时有几种情况先把最容易踩的三种列出来第一Project SDK 为空或者下拉框里没选项。这种直接进 Project Structure在 SDKs 里点加号手动添加本机 JDK 根目录。第二添加 JDK 时目录选错了你以为选中了 JDK实际选到了它目录里的 jre 或者 binIDEA 会提示“选的目录里没有 JDK”。正确做法是选中包含 bin、conf、lib 这些子目录的 JDK 根目录。第三IDEA 版本太老比如用 IDEA 2020 打开 JDK 17 的项目编辑器不识别新语法编译直接失败。这种情况建议升级 IDEA而不是折腾降级 JDK。另外还有一个容易出现但很少被注意的点你本机装了多个 JDKIDEA 默认检测到的是一个旧版本但你项目依赖的是另一个版本。这种情况在 Project Structure 里把 Project SDK 明确切到你想要的那个版本即可同时再检查一下 Maven 的编译器设置确保 Maven 编译时用的也是同一个 JDK。4.3 Maven 下载依赖慢、下载失败十有八九是镜像没配Maven 下载慢不用怀疑基本就是没走国内镜像。你打开 Maven 仓库目录如果看到一堆.lastUpdated后缀的文件那说明之前下载失败了。如果你用的是 IDEA 的 Bundled Maven它的配置在 IDEA 的安装目录里改起来不方便所以我在前面强调过要自己装一份 Maven。已经装好但还在慢的检查一下 settings.xml 里的 mirror 是否真的生效可以通过命令行执行mvn help:effective-settings这个命令会打印出 Maven 实际生效的所有配置包括你配置的 mirror。如果这里没显示阿里云地址说明你改的 settings.xml 不是 Maven 正在读取的那份。另外IDEA 里还有一个坑——Maven 设置中可能勾选了 Offline work offline 模式这个模式一旦开启Maven 就不会再去远程仓库下载任何东西项目明明缺依赖却一直报错。看到类似“Cannot resolve”的报错先检查这个开关是否被误打开了。4.4 版本匹配速查表与避坑清单最后把版本匹配和常见坑合成一张表方便你对着排查使用场景推荐配置备注老项目 / JDK 8JDK 8 Maven 3.6.x IDEA 2021不要强行用 JDK 17 编译老项目新 Spring Boot 项目JDK 17 Maven 3.9.x IDEA 2022.3Spring Boot 3.x 需要 JDK 17想用最新语法JDK 21 Maven 3.9.x IDEA 2023.1大部分企业还没完全迁移到 21依赖下载慢阿里云镜像改完 mirror 一定要 Reload 项目报错 JDK 不是内部或外部命令检查 JAVA_HOME 和 PATH新开命令行窗口重测IDEA 找不到 SDKProject Structure 手动添加指到 JDK 根目录避坑清单再强调几句第一不要用破解版或非正式渠道的 IDEA直接下官方 Community 版个人开发完全够用省掉一堆激活相关的不确定性问题。第二Maven 的本地仓库目录不要放 C 盘系统盘因为依赖越攒越多重装系统时全没了放 D 盘或专用数据盘更稳妥。第三修改 Maven 配置后在 IDEA 右侧 Maven 面板里一定要点 Reload All Maven Projects否则配置不会自动生效——这个按钮是新手最容易漏掉的一步我每次帮人排查环境问题第一步都是先按一遍这个按钮再说。我自己在实际操作中体会最深的就是所有环境配置都要有“统一路径”的意识。JDK 放在一个固定根目录Maven 放在另一个固定根目录本地仓库单独一块这样换电脑、重装系统时照着记录重建环境非常快也不会出现“这个项目用的是哪个 JDK”这种混乱问题。IDEA 的自动下载能力可以把它看作一个辅助功能但真正稳定的开发环境还是掌握在自己手里更靠谱。