news 2026/4/15 15:44:59

多版本 JDK 安装与配置

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
多版本 JDK 安装与配置

一、概述

当不同项目可能需要不同Java版本,这时我们需要在同一台机器上安装多个版本的JDK,并能够方便地切换。主要通过以下步骤实现:

  1. 下载JDK:从Oracle官网或OpenJDK网站下载所需的JDK版本。
  2. 安装JDK:可以将不同版本的JDK安装到不同的目录。例如,将JDK 8安装在/usr/lib/jvm/jdk-8,将JDK 11安装在/usr/lib/jvm/jdk-11。
  3. 配置环境变量:为不同版本的jdk创建对应的JAVA_HOME,再创建一个通用的JAVA_HOME。
  4. 切换JDK版本:将需要应用的jdk版本的JAVA_HOME赋值给这个通用的JAVA_HOME。
  5. 验证版本:使用java -version命令验证当前使用的JDK版本。

二、Windows 环境多个JDK安装与切换

2.1 下载jdk

去Oracle官网上下载想要安装的jdk版本,https://www.oracle.com/java/technologies/downloads/

2.2 安装jdk

双击.exe文件,选择好安装目录进行安装。多个版本的jdk重复这两步操作就好。

2.3 配置环境变量

  1. 首先找到jdk安装的目录。

  2. 在环境变量中新增不同jdk版本的JAVA_HOME。

  3. 创建一个通用的JAVA_HOME,将需要使用的jdk版本的JAVA_HOME赋值给这个通用的JAVA_HOME。

  4. 配置Path环境变量,编辑Path变量,在后面添加两条变量。如果之前配置过其他的jdk的path变量的话,就先把之前的配置删除,重新添加下面两条。并且这两条需要移动到最前面,不然后续无法切换jdk版本%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;

  5. 配置CLASSPATH环境变量,编辑CLASSPATH变量,在后面添加下面的配置,如果之前有配置过,也先删除再重新配置。.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;

2.4 切换JDK版本

编辑通用的JAVA_HOME变量的值,将需要应用的jdk的JAVA_HOME值赋值给通用的JAVA_HOME变量。

2.5 验证版本

使用以下命令进行验证当前jdk版本信息:

# 检查当前Java版本java-version# 检查Javac版本javac-version

三、Mac 环境多JDK安装与切换

3.1 下载jdk

去Oracle官网上下载想要安装的jdk版本,M芯片选择arm架构的.bmg格式的文件。
https://www.oracle.com/java/technologies/downloads/

3.2 安装jdk

双击下载的文件,安装步骤一步步点继续就好。

3.3 配置环境变量

  1. 安装完成后会在/Library/Java/JavaVirtualMachines目录下看到安装的jdk信息。

  2. 打开终端,进入到/root目录下,通过open .bash_profile命令打开并编辑.bash_profile文件,如果不存在这个文件就创建一个这个名字的文件。

    exportJAVA_8_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_291.jdk/Contents/HomeexportJAVA_21_HOME=/Library/Java/JavaVirtualMachines/jdk-21.jdk/Contents/HomeexportPATH=$JAVA_HOME/bin:$PATH:.aliasjdk8='export JAVA_HOME=$JAVA_8_HOME'aliasjdk21='export JAVA_HOME=$JAVA_21_HOME'

  3. 编辑完成之后,执行source .bash_profile让配置文件生效。再使用java -version命令查看jdk版本信息。

3.4 切换JDK版本

可以根据上面配置的版本别名进行切换。

3.5 验证版本

使用以下命令进行验证当前jdk版本信息:

# 检查当前Java版本java-version# 检查Javac版本javac-version

四、Linux 环境多JDK安装与切换

4.1 下载jdk

  1. 创建统一的安装目录

    # 创建 JDK 安装目录sudomkdir-p/usr/local/src/jdkssudochmod755/usr/local/src/jdks
  2. 下载 JDK

    # 方式1:从官网下载(需要账户)# 访问 https://www.oracle.com/java/technologies/downloads/# 或 https://adoptium.net/# 方式2:使用 wget 下载 OpenJDK(示例)cd/tmp# OpenJDK 8wgethttps://download.java.net/openjdk/jdk8u41/ri/openjdk-8u41-b04-linux-x64-14_jan_2020.tar.gz# OpenJDK 11wgethttps://download.java.net/java/GA/jdk11/9/GPL/openjdk-11.0.2_linux-x64_bin.tar.gz# OpenJDK 17wgethttps://download.java.net/java/GA/jdk17.0.2/dfd4a8d0985749f896bed50d7138ee7f/8/GPL/openjdk-17.0.2_linux-x64_bin.tar.gz# OpenJDK 21wgethttps://download.java.net/java/GA/jdk21.0.2/f2283984656d49d69e91c558476027ac/13/GPL/openjdk-21.0.2_linux-x64_bin.tar.gz

4.2 安装jdk

# 解压到 /usr/local/src/jdks 目录sudotar-xzfopenjdk-8u41-b04-linux-x64-14_jan_2020.tar.gz-C/usr/local/src/jdks/sudotar-xzfopenjdk-11.0.2_linux-x64_bin.tar.gz-C/usr/local/src/jdks/sudotar-xzfopenjdk-17.0.2_linux-x64_bin.tar.gz-C/usr/local/src/jdks/sudotar-xzfopenjdk-21.0.2_linux-x64_bin.tar.gz-C/usr/local/src/jdks/# 重命名为简洁的名称(可选)cd/usr/local/src/jdkssudomvjava-se-8u41-ri jdk-8sudomvjdk-11.* jdk-11sudomvjdk-17.* jdk-17sudomvjdk-21.* jdk-21# 设置权限sudochmod-R755/usr/local/src/jdks/jdk-*sudochown-Rroot:root /usr/local/src/jdks/jdk-*

4.3 验证安装

# 检查每个 JDK 版本/usr/local/src/jdks/jdk-8/bin/java-version/usr/local/src/jdks/jdk-11/bin/java-version/usr/local/src/jdks/jdk-17/bin/java-version/usr/local/src/jdks/jdk-21/bin/java-version

4.4 配置 JDK 切换

4.4.1 使用环境变量(按需切换)

创建切换脚本

# 1.创建切换脚本目录mkdir-p~/bin/jdk_switcher# 2.创建脚本cat>~/bin/jdk_switcher/jdk-switch.sh<<'EOF' #!/bin/bash # JDK 切换脚本 JDK_BASE_DIR="/usr/local/src/jdks" CURRENT_JDK_FILE="$HOME/.current_jdk" show_usage() { echo "使用方法: $0 [版本号]" echo "可用版本:" ls -1 "$JDK_BASE_DIR" | grep -E "^jdk-|^java-" | sed 's/^/ /' echo "" echo "示例:" echo " $0 8 # 切换到 JDK 8" echo " $0 11 # 切换到 JDK 11" echo " $0 17 # 切换到 JDK 17" echo " $0 current # 显示当前版本" } get_jdk_path() { local version=$1 local jdk_path # 尝试匹配 jdk-版本号 jdk_path=$(ls -d "$JDK_BASE_DIR"/jdk-$version* 2>/dev/null | head -1) # 如果没找到,尝试匹配 java-版本号 if [ -z "$jdk_path" ]; then jdk_path=$(ls -d "$JDK_BASE_DIR"/java-$version* 2>/dev/null | head -1) fi echo "$jdk_path" } set_jdk() { local version=$1 local jdk_path=$(get_jdk_path "$version") if [ -z "$jdk_path" ]; then echo "错误: 未找到 JDK $version" return 1 fi if [ ! -d "$jdk_path" ]; then echo "错误: JDK 路径不存在: $jdk_path" return 1 fi # 设置环境变量 export JAVA_HOME="$jdk_path" export PATH="$JAVA_HOME/bin:$PATH" # 保存当前选择 echo "$jdk_path" > "$CURRENT_JDK_FILE" echo "已切换到: $jdk_path" java -version } show_current() { if [ -f "$CURRENT_JDK_FILE" ]; then current_jdk=$(cat "$CURRENT_JDK_FILE") echo "当前 JDK: $current_jdk" $current_jdk/bin/java -version else echo "未设置 JDK" java -version 2>/dev/null || echo "Java 未安装或未在 PATH 中" fi } # 主逻辑 main() { if [ $# -eq 0 ]; then show_usage return 1 fi case "$1" in "current") show_current ;; "list") echo "已安装的 JDK 版本:" ls -1 "$JDK_BASE_DIR" | grep -E "^jdk-|^java-" | sed 's/^/ /' ;; "help"|"-h"|"--help") show_usage ;; *) set_jdk "$1" ;; esac } main "$@" EOF# 3.设置执行权限chmod+x ~/bin/jdk_switcher/jdk-switch.sh# 4.创建符号链接ln-sf~/bin/jdk_switcher/jdk-switch.sh ~/bin/jdk-switch# 5.添加到 .bashrc 或 .zshrcecho'alias java-switch="~/bin/jdk-switch"'>>~/.bashrcecho'export PATH="$HOME/bin:$PATH"'>>~/.bashrcsource~/.bashrc

4.4.2 使用切换脚本

# 列出所有 JDKjdk-switch list# 切换到 JDK 8jdk-switch8# 切换到 JDK 11jdk-switch11# 查看当前版本jdk-switch current# 显示帮助jdk-switchhelp
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/15 6:45:31

JasperSoft Studio在零售业数据分析中的5个实战案例

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 开发一个零售业数据分析模板库&#xff0c;包含&#xff1a;1) 库存周转率分析报表&#xff1b;2) 门店销售热力图&#xff1b;3) 会员消费行为分析&#xff1b;4) 促销活动效果评…

作者头像 李华
网站建设 2026/4/15 15:44:57

火山引擎AI大模型对比:GLM-4.6V-Flash-WEB有何优势?

火山引擎AI大模型对比&#xff1a;GLM-4.6V-Flash-WEB有何优势&#xff1f; 在如今的智能应用开发中&#xff0c;一个现实问题正变得越来越突出&#xff1a;我们手握强大的多模态大模型&#xff0c;却常常“用不起来”。不是效果不够好&#xff0c;而是跑得太慢、太贵、太重——…

作者头像 李华
网站建设 2026/4/15 15:44:57

零基础学会Python镜像源配置:图文详解

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 开发一个交互式Python镜像源配置助手&#xff0c;功能包括&#xff1a;1. 图形化界面&#xff08;Tkinter&#xff09;显示当前源配置 2. 提供主流镜像源一键切换按钮 3. 测试连接…

作者头像 李华
网站建设 2026/4/15 15:20:10

闪电开发:用NEXT AI DRAWIO快速验证产品原型

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 开发一个基于NEXT AI DRAWIO的快速原型工具&#xff0c;能够根据产品描述自动生成UI流程图和交互原型。要求支持&#xff1a;1&#xff09;从文字需求生成初始原型 2&#xff09;拖…

作者头像 李华
网站建设 2026/4/10 13:59:01

在线电路仿真辅助高校电路原理教学的探索

用一块“虚拟面包板”点亮电路课堂&#xff1a;在线仿真如何重塑高校电路教学在讲授《电路原理》的第十年&#xff0c;我仍会遇到同样的问题——当我在黑板上画出一个RLC串联电路&#xff0c;写下微分方程&#xff0c;再推导出其欠阻尼响应时&#xff0c;台下总有学生皱眉&…

作者头像 李华
网站建设 2026/4/15 12:12:05

如何用GLM-4.6V-Flash-WEB实现低延迟图像问答系统?

如何用GLM-4.6V-Flash-WEB实现低延迟图像问答系统&#xff1f; 在智能客服、在线教育和办公自动化的今天&#xff0c;用户不再满足于“上传图片 → 等待几秒 → 得到结果”的慢节奏交互。他们希望像聊天一样自然地问&#xff1a;“这张发票的金额是多少&#xff1f;”“图表里的…

作者头像 李华