
在Linux切换JDK一条命令就可以解决
【使用命令】
update-alternatives --config java
【案例】
[root@VM-4-14-centos lib]# update-alternatives --config java
共有 2 个提供“java”的程序。
选项 命令
-----------------------------------------------
*+ 1 java-1.8.0-openjdk.x86_64 (/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.362.b08-1.el7_9.x86_64/jre/bin/java)
2 java-11-openjdk.x86_64 (/usr/lib/jvm/java-11-openjdk-11.0.18.0.10-1.el7_9.x86_64/bin/java)
按 Enter 保留当前选项[+],或者键入选项编号:2
但是在Mac中可没有这个命令。
Mac动态切换JDK方案!
我们本次计划:配别名的方式实现多JDK版本切换,
实现效果如下:使用java11 -version输出jdk11版本信息、使用java17 -version输出jdk17版本信息、使用jdk8就能切换为java8、使用jdk17就能切换为java17
想了解bash_profile作用,请跳转:https://www.zanglikun.com/11801.html
编辑 ~/.bash_profile
vi ~/.bash_profile
# Java & Maven 环境变量配置
# 当前机器使用的是 zsh,~/.zshrc 中已经 source ~/.bash_profile
# 所以这段既可以放 ~/.bash_profile,也可以直接放 ~/.zshrc
# Maven
export MAVEN_HOME="/Users/zanglikun/dev/apache-maven-3.6.3"
# Java 安装路径
export JAVA_HOME_8="/Library/Java/JavaVirtualMachines/jdk-1.8.jdk/Contents/Home"
export JAVA_HOME_11="/Library/Java/JavaVirtualMachines/jdk-11.jdk/Contents/Home"
export JAVA_HOME_17="/Users/zanglikun/Library/Java/JavaVirtualMachines/ms-17.0.18/Contents/Home"
# 从 PATH 中移除指定路径,避免多次 source 后 PATH 重复
remove_from_path() {
local target="$1"
local item
local new_path=""
local old_ifs="$IFS"
[ -z "$target" ] && return 0
IFS=":"
for item in $PATH; do
[ "$item" = "$target" ] && continue
if [ -z "$new_path" ]; then
new_path="$item"
else
new_path="$new_path:$item"
fi
done
IFS="$old_ifs"
export PATH="$new_path"
}
# 清理旧的 Java bin 路径
clean_java_path() {
remove_from_path "$JAVA_HOME_8/bin"
remove_from_path "$JAVA_HOME_11/bin"
remove_from_path "$JAVA_HOME_17/bin"
}
# 切换 Java 版本
use_jdk() {
local java_home="$1"
if [ ! -d "$java_home" ]; then
echo "JDK 路径不存在: $java_home"
return 1
fi
clean_java_path
export JAVA_HOME="$java_home"
export PATH="$JAVA_HOME/bin:$PATH"
# JDK 8 有 jre 目录,JDK 11+ 通常没有
if [ -d "$JAVA_HOME/jre" ]; then
export JRE_HOME="$JAVA_HOME/jre"
else
unset JRE_HOME
fi
hash -r 2>/dev/null
echo "JAVA_HOME=$JAVA_HOME"
java -version
}
# 快速切换 JDK
jdk8() {
use_jdk "$JAVA_HOME_8"
}
jdk11() {
use_jdk "$JAVA_HOME_11"
}
jdk17() {
use_jdk "$JAVA_HOME_17"
}
# 快速使用指定版本执行 java 命令
# 例如:java8 -version
java8() {
jdk8 >/dev/null && java "$@"
}
java11() {
jdk11 >/dev/null && java "$@"
}
java17() {
jdk17 >/dev/null && java "$@"
}
# 默认使用 JDK 8
jdk8 >/dev/null
# 配置 Maven
remove_from_path "$MAVEN_HOME/bin"
export PATH="$MAVEN_HOME/bin:$PATH"
不要忘记!!!!配置生效得执行下文命令
source ~/.bash_profile
测试使用
先输入jdk[X]后,再使用java命令即可!
zanglikun@zanglikundeMacBook-Pro lib % jdk11
zanglikun@zanglikundeMacBook-Pro lib % java -version
java version "11.0.18" 2023-01-17 LTS
Java(TM) SE Runtime Environment 18.9 (build 11.0.18+9-LTS-195)
Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.18+9-LTS-195, mixed mode)
zanglikun@zanglikundeMacBook-Pro lib % jdk17
zanglikun@zanglikundeMacBook-Pro lib % java -version
java version "17.0.6" 2023-01-17 LTS
Java(TM) SE Runtime Environment (build 17.0.6+9-LTS-190)
Java HotSpot(TM) 64-Bit Server VM (build 17.0.6+9-LTS-190, mixed mode, sharing)
zanglikun@zanglikundeMacBook-Pro lib % java19 -version
java version "19.0.2" 2023-01-17
Java(TM) SE Runtime Environment (build 19.0.2+7-44)
Java HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)
解决Mac重启配置的bash_profile失效问题
mac启动脚本现在修改为更加先进的zsh模式,其作用等同于原来的bash_profile。所以我们只需要在zsh的脚本你加入 source ~/.bash_profile 即可解决问题
vim ~/.zshrc
添加内容
source ~/.bash_profile
保存即可,重启电脑后,就能使用了
特殊说明:
上述文章均是作者实际操作后产出。烦请各位,请勿直接盗用!转载记得标注原文链接:www.zanglikun.com
第三方平台不会及时更新本文最新内容。如果发现本文资料不全,可访问本人的Java博客搜索:标题关键字。以获取最新全部资料 ❤
免责声明: 本站文章旨在总结学习互联网技术过程中的经验与见解。任何人不得将其用于违法或违规活动!所有违规内容均由个人自行承担,与作者无关。
第三方平台不会及时更新本文最新内容。如果发现本文资料不全,可访问本人的Java博客搜索:标题关键字。以获取最新全部资料 ❤
免责声明: 本站文章旨在总结学习互联网技术过程中的经验与见解。任何人不得将其用于违法或违规活动!所有违规内容均由个人自行承担,与作者无关。
