Java默认版本由PATH中首个java/javac路径决定,需设JAVA_HOME指向JDK根目录并使%JAVA_HOME%\bin(Windows)或$JAVA_HOME/bin(macOS/Linux)置于PATH最前,再验证java -version与javac -version版本一致。
Java中配置JRE与JDK默认版本,本质是控制java、javac等命令实际调用的路径。系统不区分“JRE默认”和“JDK默认”,而是通过PATH环境变量顺序决定哪个bin目录优先被找到——谁在前面,谁就是“默认”。真正需要设置的是JAVA_HOME(供其他工具如Maven、IDE识别JDK根目录),以及确保PATH指向你想要的JDK的bin目录。
先查清本地有哪些Java版本,避免配错路径:
where java 和 where javac,看输出路径是否一致;再运行 java -version 和 javac -version,核对版本号which java、which javac,再用 /path/to/java -version 验证具体版本;也可用 /usr/libexec/java_home -V(macOS)或 update-java-alternatives -l(部分Linux发行版)列出所有已注册JDKJAVA_HOME 应指向JDK安装根目录(不含bin),不是JRE目录。PATH则必须包含$JAVA_HOME/bin(Windows为%JAVA_HOME%\bin)且放在最前:
JAVA_HOME,值填类似 C:\Program Files\Java\jdk-17.0.1;再编辑Path,把 %JAVA_HOME%\bin 移到最顶端~/.zshrc或~/.bash_profile):export JAVA_HOME=$(/usr/libexec/java_home -v 17)export PATH=$JAVA_HOME/bin:$PATHsource ~/.zshrc 生效关闭所有终端/命令行窗口,新开一个,依次执行:
echo $JAVA_HOME(macOS/Linux)或 echo %JAVA_HOME%(Windows)→ 应显示你设定的JDK路径java -version → 显示JDK自带的JRE版本(如17.0.1)javac -version → 必须显示相同主版本号(如17.0.1),否则说明PATH没指向JDK的bin,可能误指到了JRE的bin或旧版本不需要卸载旧版本,靠修改JAVA_HOME和PATH即可切换。进阶用户可用工具简化操作:
/usr/libexec/java_home -v 11 获取JDK 11路径,再赋值给JAVA_HOME
openjdk-11-jdk和openjdk-17-jdk后,用 sudo update-alternatives --config java 和 --config javac 交互式切换setjdk11.bat),内容为set JAVA_HOME=C:\...\jdk-11 + set PATH=%JAVA_HOME%\bin;%PATH%,双击运行即刻切换(仅当前窗口有效)基本上就这些。核心就两点:JAVA_HOME指向正确的JDK根目录,PATH开头包含它的bin。别把JRE路径当JDK用,也别漏掉PATH里的bin——这两处错得最多。