问题描述
最近在调试一个 Java 21 的 Maven 项目时,遇到了一个奇怪的坑:
- CMD 终端输入
java -version,显示 Java 21 ✅ - Trae IDE 内置终端输入
java -version,显示 Java 17 ❌ - 系统环境变量已正确配置
JAVA_HOME为 JDK 21 - Maven 编译时报错:
错误: 无效的目标发行版:21
明明系统装的是 JDK 21,为什么 Trae 终端就是识别不出来?
问题原因
在Trae IDE中安装了 Java相关的插件,它会在系统环境变量额外加上插件中配置的JDK版本 以此来应用其配置。所以Trae 启动的终端默认使用 Java 插件配置的 JDK 版本,而不是系统的环境变量。
可以通过命令从trae的终端中看到它用的JAVA_HOME和Path环境变量
bash
命令:
echo $env:JAVA_HOME; echo $env:path
输出:
D:\\Program_from_C\\Program Files\\Java\\jdk-17
D:\\Program_from_C\\Program Files\\Java\\jdk-17\\bin;C:\\Users\\yuchen\\.trae-cn\\tools\\maven\\latest\\bin;
再去看看设置中,确实是应用了Java插件的环境变量:

这意味着即使你把 JAVA_HOME 和 PATH 配置得再完美,Trae 终端依然会我行我素地用它的"小环境"。
解决方案
在 Trae 中配置 JDK 版本:
1. Ctrl + Shift + P,打开命令面板
2. 输入 "Java: Configure Java Runtime"
3. 在列表中选择已安装的 JDK 21
或者更简单:
1. Ctrl + Shift + P
2. 输入 "java"
3. 选择 "Java: Quick Start" 或直接配置 Java Runtime
配置完成后,重新打开终端,java -version 就会显示正确的版本了。
验证
bash
# 在 Trae 终端中验证
java -version
# 应该显示
# java version "21.0.x"
# Java(TM) SE Runtime Environment ...
总结
| 终端类型 | JDK 来源 | 控制方式 |
|---|---|---|
| Windows CMD | 系统环境变量 | JAVA_HOME / PATH |
| Trae 内置终端 | Java 插件配置 | Ctrl+Shift+P 配置 |
| IDEA 终端 | IDEA 项目 SDK | Project Structure |
这也提醒我,以后遇到类似问题,别只盯着系统环境变量,IDE 插件的"小动作"也得考虑到。