必须安装jdk 17+并配置java.home指向其根目录,安装microsoft官方extension pack for java后重启vscode,才能正常运行java程序。

VSCode运行Java程序前,必须确认JDK 17+已装且java -version和javac -version输出一致
VSCode本身不带Java运行时,所有功能(语法补全、调试、运行)都依赖你本地装的JDK——不是JRE,也不是JDK 8或11(官方扩展已弃用),必须是JDK 17或21(LTS最稳)。常见错误是:终端里java -version显示17,但javac -version报错或显示8,说明PATH混用了不同版本,或者只装了JRE。Windows用户尤其要注意安装包是否选了“JDK”而非“JRE”,Mac用Homebrew装过temurin17后路径通常是/opt/homebrew/opt/temurin17/libexec/openjdk.jdk/Contents/Home。
- 打开终端,执行
java -version和javac -version,两行输出必须完全一致且≥17 - 检查
$JAVA_HOME(macOS/Linux)或%JAVA_HOME%(Windows)是否指向JDK根目录(含bin和lib子目录),不是jre子目录,也不能带末尾斜杠 - 路径含空格或中文?Windows下常见
C:\Program Files\...导致VSCode静默失败,建议重装到C:\jdk-17这类无空格路径
只装Extension Pack for Java,别手动凑单个插件
这个扩展包是微软官方打包的5个核心组件(Language Support、Debugger、Test Runner等),缺一不可。单独装Language Support for Java™看似能高亮,但没调试器、没运行按钮、项目不识别,等于半残。更危险的是装了仿冒扩展(比如搜“Java”出来的非Red Hat或Microsoft发布的),会和官方包冲突,导致状态栏不显示JDK版本、右键没Run菜单。
- 在VSCode扩展市场搜
Extension Pack for Java,认准发布者是Microsoft - 安装完必须重启VSCode(不是重载窗口),否则Language Server不加载,
.java文件里连System.out都不提示 - 如果之前装过旧版Java插件,先禁用再装这个包,避免
java.home配置被覆盖
java.home必须手动设,VSCode不读系统JAVA_HOME
即使你在系统里配好了JAVA_HOME,VSCode默认也不认——它用自己的java.home设置来启动Language Server。90%的“无法运行”“类找不到”“无代码跳转”问题,根源都在这里。路径填错(比如指向bin目录)、用单反斜杠\(Windows)、或指向JRE路径,都会让整个Java支持失效。
- 按
Ctrl+,打开设置 → 搜索java.home→ 点“在settings.json中编辑” - 填入JDK根路径,Windows示例:
"java.home": "C:/Program Files/Eclipse Adoptium/jdk-17.0.9.9-hotspot"(用正斜杠或双反斜杠) - macOS/Linux示例:
"java.home": "/Library/Java/JavaVirtualMachines/temurin-17.jdk/Contents/Home" - 多JDK环境?在项目根目录建
.vscode/settings.json单独指定,避免全局污染
新建Java文件后,点右上角绿色三角形Run按钮,别依赖launch.json
VSCode对简单Java文件(无pom.xml或build.gradle)支持开箱即用,只要JDK和扩展到位,HelloWorld.java保存后,右上角就会出现绿色运行按钮。这时候不需要手写launch.json,那是给复杂调试场景用的。很多人卡在这一步,是因为前面JDK没配好,或者扩展没重启,导致按钮压根不出现。
- 新建文件夹 → 用VSCode打开 → 右键新建
HelloWorld.java→ 输入public class HelloWorld { public static void main(String[] args) { System.out.println("OK"); } } - 保存后,右上角出现绿色三角形,点它,或按
Ctrl+F5;终端输出OK即成功 - 如果没按钮,先看状态栏右下角是否显示
Java 17;不显示,说明java.home或扩展没生效 - 想跑Maven项目?确保根目录有
pom.xml,首次打开时点右下角弹出的Import project?,否则项目结构不会被识别
最容易被忽略的是:VSCode的Java支持高度依赖Language Server的启动,而它只认java.home指向的JDK 17–21。系统环境变量、终端里的java命令、甚至IDEA里能跑的项目,在VSCode里都可能因为这一个路径没对就彻底失能。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











