网站首页 > 技术文章 正文
1.下载jdk
到Oracle官网下载,为了方便管理,我下载到: /usr/local/src/jdk
jdk-8u202-linux-x64.tar.gz
jdk-11.0.27_linux-x64_bin.tar.gz
2.解压到安装目录
创建安装目录
sudo mkdir -p /u01/jdk # 创建目录
sudo chown -R root:root/u01/jdk # 设置权限
解压,tar.gz包解压就可以使用,无需编译,如下命令:
tar -xzf jdk-8u202-linux-x64.tar.gz -C /u01/jdk/
tar -xzf jdk-11.0.27_linux-x64_bin.tar.gz -C /u01/jdk/
3.多个版本管理
用alternatives工具进行版本管理,alternatives工具是Rocky系统默认的版本管理工具。
3.1.注册 JDK 到alternatives
# 注册 java
sudo alternatives --install /usr/bin/java java /u01/jdk/jdk1.8.0_202/bin/java 2000
sudo alternatives --install /usr/bin/java java /u01/jdk/jdk-11.0.27/bin/java 1000
# 注册 javac
sudo alternatives --install /usr/bin/javac javac /u01/jdk/jdk1.8.0_202/bin/javac 2000
sudo alternatives --install /usr/bin/javac javac /u01/jdk/jdk-11.0.27/bin/javac 2000
然后就可以了
不需要可以这样移除注册:
sudo alternatives --remove java /u01/jdk/jdk1.8.0_202/bin/java
切换版本以及查看当前使用的版本和版本列表,输入序号切换版本,命令如下:
sudo alternatives --config java
可以看到,当前版本是序号2,版本:jdk-11.0.27,输入1,选择jdk1.8.0_202,再查看
sudo alternatives --display java
当前切换到了jdk1.8.0_202版本,如下图示:
除了以上命令查看以外,还可以这样查看已经注册的JDK工具
alternatives --list | grep java
4.验证
解压就算安装完成了,只是通过alternatives进行版本管理。因为版本注册的时候,已经映射到/usr/bin/java上,所以无需环境变量配置,也可以直接使用命令
java -version
javac -version
alternatives注册实际是创建软连接到 /usr/bin/java,切换就是改变/usr/bin/java连接指向。
如果我们创建了环境变量,如何去处理环境变量和alternatives的切换问题,这才是本文章注意的目的。
5.环境变量
已经通过alternatives注册了,还需要配置环境变量吗?
alternatives仅影响 /usr/bin 下的命令链接,而有些应用可能无法获取/usr/bin目录,当然也就没法找到java了。所以环境变量还是需要配置的。
5.1.全局配置(所有用户生效)
sudo tee /etc/profile.d/jdk.sh << 'EOF'
export JAVA_HOME=/u01/jdk/jdk1.8.0_202
export PATH=$JAVA_HOME/bin:$PATH
EOF
# 立即生效
source /etc/profile.d/jdk.sh
验证,切换用户测试
su - iRain
java -version
5.2.存在问题
当我们配置环境变量后,通过alternatives切换,你会发现$JAVA_HOME没有跟着切换,这导致了我们只是切换了alternatives,而环境变量对应的$JAVA_HOME并没有切换
解决该问题,我们通过自动化脚本,修改 /etc/profile.d/jdk.sh,内容如下:
jdk_switch() {
# 动态提取所有有效JDK路径
echo "正在扫描可用JDK版本..."
mapfile -t jdk_paths < <(
sudo alternatives --display java |
grep -oP '/[^ ]+/bin/java(?= |$)' |
sort -u
)
# 检查结果
if [ ${#jdk_paths[@]} -eq 0 ]; then
echo "错误:未检测到已注册的JDK!"
echo "请先使用以下命令注册JDK:"
echo "sudo alternatives --install /usr/bin/java java /path/to/jdk/bin/java 优先级"
return 1
fi
# 显示带编号的菜单
echo "可用JDK版本:"
for i in "${!jdk_paths[@]}"; do
echo "$((i+1))) ${jdk_paths[i]}"
done
# 用户选择
while true; do
read -p "选择版本编号 (1-${#jdk_paths[@]}): " choice
[[ "$choice" =~ ^[0-9]+$ ]] && \
(( choice >= 1 && choice <= ${#jdk_paths[@]} )) && break
echo "无效输入,请重新选择!"
done
target_java="${jdk_paths[choice-1]}"
# 执行切换
if sudo alternatives --set java "$target_java"; then
export JAVA_HOME=$(dirname $(dirname "$target_java"))
export PATH="/usr/bin:$JAVA_HOME/bin:$PATH"
echo "切换成功!当前JDK:"
echo "JAVA_HOME=$JAVA_HOME"
java -version
else
echo "切换失败!请检查sudo权限。"
return 1
fi
}
立即生效,设置权限所有用户可用
sudo chmod +x /etc/profile.d/jdk.sh
source /etc/profile.d/jdk.sh
6.切换验证
jdk_switch
上图可知,切换正确。
(end)
猜你喜欢
- 2025-08-21 JDK 24:Java 24 中的新特性_jdk1.8的新特性stream
- 2025-08-21 第1章 初识Java_java从入门到实践
- 2024-11-04 kubernetes-16:制作oraclejdk镜像
- 2024-11-04 JDK9~11版本和相关特性,建议收藏使用
- 2024-11-04 JAVA零基础入门:JDK的概述及安装 java jdk的安装
- 2024-11-04 5张图讲明白JDK1.7下的HashMap死循环(原理+实战
- 2024-11-04 JDK安装 jdk安装路径查看
- 2024-11-04 定制化JDK升级引发的离奇事件 jvm定制
- 2024-11-04 腾讯牛逼!终于开源了自家的 JDK——Kona
- 2024-11-04 三、JDK下载与安装指南 jdk下载安装配置步骤
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- 前端设计模式 (75)
- 前端性能优化 (51)
- 前端模板 (66)
- 前端跨域 (52)
- 前端缓存 (63)
- 前端aes加密 (58)
- 前端脚手架 (56)
- 前端md5加密 (54)
- 前端路由 (61)
- 前端数组 (73)
- 前端js面试题 (50)
- 前端定时器 (59)
- Oracle RAC (76)
- oracle恢复 (77)
- oracle 删除表 (52)
- oracle 用户名 (80)
- oracle 工具 (55)
- oracle 内存 (55)
- oracle 导出表 (62)
- oracle约束 (54)
- oracle 中文 (51)
- oracle链接 (54)
- oracle的函数 (58)
- oracle面试 (55)
- 前端调试 (52)
本文暂时没有评论,来添加一个吧(●'◡'●)