0

0

在Java里如何安装不同版本的JDK_Java多版本环境配置说明

P粉602998670

P粉602998670

发布时间:2026-01-13 11:47:36

|

811人浏览过

|

来源于php中文网

原创

Java多版本共存需手动管理JAVA_HOME和PATH或使用SDKMAN!等工具,而非仅安装多个JDK;不同系统路径定位方式不同,切换时须确保$JAVA_HOME/bin在PATH最前,且Maven/IDE配置需与之统一。

在java里如何安装不同版本的jdk_java多版本环境配置说明

Java 多版本共存不是靠“安装多个 JDK 就自动切换”,而是靠手动管理 JAVA_HOMEPATH,再配合 Shell 别名或工具(如 SDKMAN!)实现快速切换。Windows 用户尤其容易误以为装完多个 JDK 就能用 java -version 随意切——实际默认只认注册表或首个出现在 PATH 里的 java.exe

确认已安装的 JDK 路径(Linux/macOS/Windows)

不同系统查路径方式不同,但核心是定位到每个 JDK 的根目录(含 binlib 子目录):

  • Linux/macOS:常用路径如 /usr/lib/jvm/java-11-openjdk-amd64/Library/Java/JavaVirtualMachines/jdk-17.jdk/Contents/Home~/sdk/jdk-21.0.1
  • Windows:典型路径如 C:\Program Files\Java\jdk-11.0.23C:\Users\Alice\sdk\zulu-8.78.0.19-ca-jdk8.0.412-win_x64
  • 别依赖 which javawhere java 返回的路径——它只告诉你当前生效的 java 在哪,不反映所有已安装 JDK 的位置
  • 推荐在终端里执行 /usr/libexec/java_home -V(macOS)、update-java-alternatives -l(Ubuntu/Debian)或手动检查 C:\Program Files\Java\ 目录内容

手动切换 JDK:改 JAVA_HOME + 重置 PATH

这是最轻量、无额外依赖的方式,适合 CI 脚本或临时调试。关键点在于:必须让 $JAVA_HOME/bin 排在 PATH 最前面,否则系统可能调用旧版本的 java

export JAVA_HOME="/Library/Java/JavaVirtualMachines/jdk-17.jdk/Contents/Home"
export PATH="$JAVA_HOME/bin:$PATH"

常见错误:

立即学习Java免费学习笔记(深入)”;

绘蛙-多图成片
绘蛙-多图成片

绘蛙新推出的AI图生视频工具

下载
  • PATH 拼接时漏了 $PATH,导致找不到 lsgit 等命令
  • Windows 的 set JAVA_HOME=... 是会话级的,关掉 CMD 就失效;PowerShell 中要用 $env:JAVA_HOME="..."; $env:PATH="$env:JAVA_HOME\bin;$env:PATH"
  • 某些 IDE(如 IntelliJ)启动后会缓存 JAVA_HOME,改完环境变量需重启 IDE 才生效

用 SDKMAN! 管理多 JDK(推荐 macOS/Linux)

SDKMAN! 是专为 JVM 生态设计的版本管理器,比手动改环境变量更可靠,支持一键安装、切换、卸载,且不影响系统全局 Java。

  • 安装:
    curl -s "https://get.sdkman.io" | bash
    ,然后重启 shell 或运行 source "$HOME/.sdkman/bin/sdkman-init.sh"
  • 列出可用 JDK:sdk list java(会显示 temurin-17.0.10+7zulu-8.78.0.19-ca 等带厂商和构建号的完整标识)
  • 安装并设为默认:sdk install java 17.0.10-temurin && sdk default java 17.0.10-temurin
  • 为当前 shell 临时切换:sdk use java 8.0.412-zulu(退出终端即还原)
  • 注意:sdk 命令本身依赖 Bash/Zsh,Windows 用户需用 WSL 或 Git Bash;PowerShell 原生不支持

Windows 下用 javawrapperpyenv-win?不推荐

Windows 缺乏原生的 shell 版本管理生态,强行套用类 Unix 工具反而增加故障点:

  • javawrapper 已多年未维护,对 JDK 17+ 的模块系统支持差,java --list-modules 可能报错
  • pyenv-win 是为 Python 设计的,硬改来管 Java 容易破坏 PYTHONPATH 或触发权限问题
  • 更稳妥的做法:用 Chocolatey(choco install openjdk11 openjdk17),再配合 PowerShell 函数封装切换逻辑,或直接在 IDE 里为每个项目指定 JDK 路径(IntelliJ 的 Project Structure → Project Settings → Project → Project SDK)

真正麻烦的从来不是装多个 JDK,而是构建工具(Maven/Gradle)和 IDE 各自读取不同来源的 Java 版本:Maven 从 MAVEN_OPTSpom.xml 里的 maven-compiler-plugin 读,IDE 可能读 project.settings.idea/misc.xml。一旦出现 “编译用 JDK 17,运行报 UnsupportedClassVersionError”,优先检查这三处是否一致。

相关专题

更多
python开发工具
python开发工具

php中文网为大家提供各种python开发工具,好的开发工具,可帮助开发者攻克编程学习中的基础障碍,理解每一行源代码在程序执行时在计算机中的过程。php中文网还为大家带来python相关课程以及相关文章等内容,供大家免费下载使用。

749

2023.06.15

python打包成可执行文件
python打包成可执行文件

本专题为大家带来python打包成可执行文件相关的文章,大家可以免费的下载体验。

635

2023.07.20

python能做什么
python能做什么

python能做的有:可用于开发基于控制台的应用程序、多媒体部分开发、用于开发基于Web的应用程序、使用python处理数据、系统编程等等。本专题为大家提供python相关的各种文章、以及下载和课程。

758

2023.07.25

format在python中的用法
format在python中的用法

Python中的format是一种字符串格式化方法,用于将变量或值插入到字符串中的占位符位置。通过format方法,我们可以动态地构建字符串,使其包含不同值。php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

618

2023.07.31

python教程
python教程

Python已成为一门网红语言,即使是在非编程开发者当中,也掀起了一股学习的热潮。本专题为大家带来python教程的相关文章,大家可以免费体验学习。

1262

2023.08.03

python环境变量的配置
python环境变量的配置

Python是一种流行的编程语言,被广泛用于软件开发、数据分析和科学计算等领域。在安装Python之后,我们需要配置环境变量,以便在任何位置都能够访问Python的可执行文件。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

547

2023.08.04

python eval
python eval

eval函数是Python中一个非常强大的函数,它可以将字符串作为Python代码进行执行,实现动态编程的效果。然而,由于其潜在的安全风险和性能问题,需要谨慎使用。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

577

2023.08.04

scratch和python区别
scratch和python区别

scratch和python的区别:1、scratch是一种专为初学者设计的图形化编程语言,python是一种文本编程语言;2、scratch使用的是基于积木的编程语法,python采用更加传统的文本编程语法等等。本专题为大家提供scratch和python相关的文章、下载、课程内容,供大家免费下载体验。

706

2023.08.11

nginx部署php项目教程汇总
nginx部署php项目教程汇总

本专题整合了nginx部署php项目教程汇总,阅读专题下面的文章了解更多详细内容。

1

2026.01.13

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PostgreSQL 教程
PostgreSQL 教程

共48课时 | 7万人学习

Git 教程
Git 教程

共21课时 | 2.6万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号