这是java扩展未识别jdk路径所致,需检查jdk安装、配置java_home与path、在settings.json中正确设置java.configuration.runtimes指向jdk根目录,并重启vscode。

VSCode里Java程序报错“Command 'Java: Create Java Project' not found”
这是典型的Java扩展没识别到JDK,不是插件没装,而是它根本找不到JAVA_HOME或有效JDK路径。VSCode的Java支持(Red Hat的Extension Pack for Java)启动时会扫描系统环境变量和常见安装路径,一旦失败就直接禁用大部分功能。
- 先确认本地已安装JDK(不是JRE),推荐用
java -version和javac -version都返回版本号 - Windows用户别只设
JAVA_HOME,还得把%JAVA_HOME%\bin加进PATH;macOS/Linux注意权限,避免用/usr/bin/java这种系统自带软链接(它常指向JRE) - VSCode重启前,务必关掉所有窗口——它只在启动时读取环境变量,热加载不生效
settings.json里怎么写java.configuration.runtimes
这个配置项才是VSCode真正用来绑定JDK路径的开关,比JAVA_HOME更可靠,尤其当你有多个JDK版本(比如JDK 8、17、21混用)时必须显式声明。
- 打开VSCode设置(Ctrl+,),搜
java.configuration.runtimes,点“在settings.json中编辑” - 填入类似这样的结构(路径按你本地实际改):
[{"name": "JavaSE-17","path": "/Library/Java/JavaVirtualMachines/jdk-17.jdk/Contents/Home"}] - 名字(
name)不能乱写,得匹配MANIFEST.MF里的Bundle-RequiredExecutionEnvironment值,常见可选值:JavaSE-1.8、JavaSE-11、JavaSE-17、JavaSE-21 - 路径必须指向JDK根目录(含
bin、lib子目录),不是bin目录本身,否则javac调用会失败
运行单个.java文件时提示“Cannot resolve module java.base”
这是VSCode默认用Language Support for Java(powered by Eclipse JDT LS)做语义分析,但它需要项目结构才能正确挂载模块路径。裸跑单文件时,JDT LS可能没加载java.base等基础模块。
- 最简单解法:右键文件 → “Run Java”,它会自动用当前
java.configuration.runtimes里匹配的JDK执行,不依赖项目结构 - 如果想调试,别直接点“Debug”,先确保文件所在目录是Java项目的根(含
src或module-info.java),否则断点无效 - 临时绕过:在文件顶部加
// line below is required for JDT LS to recognize module path这类注释没用,JDT LS不认注释,必须靠真实项目配置
Mac上用Homebrew装的OpenJDK总被VSCode忽略
Homebrew把JDK装在/opt/homebrew/opt/openjdk@17/libexec/openjdk.jdk这类路径,而VSCode默认扫描/Library/Java/JavaVirtualMachines/,所以自动发现机制失效。
- 别用
brew link openjdk@17——它只建/usr/local/bin软链,对JDK路径发现无意义 - 直接把Homebrew的JDK路径填进
java.configuration.runtimes,例如:/opt/homebrew/opt/openjdk@17/libexec/openjdk.jdk/Contents/Home - 验证是否生效:打开命令面板(Ctrl+Shift+P),输
Java: Configure Classpath,看“Runtimes”列表里有没有你刚配的条目
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











