JDK1.8与JDK17多版本共存相互切换(windows、macOS、Linux、IDE)

 更新时间:2025年12月20日 14:47:30   作者:wfyflyy  
在电脑已经安装之前主流的jdk1.8后避免不了要安装新的主流jdk17,本章主要目的是介绍不同项目和场景间切换JDK 1.8和JDK 17,提高开发效率并避免版本冲突(包括windows、macOS、Linux、IDE)

在电脑已经安装之前主流的jdk1.8后避免不了要安装新的主流jdk17,本章主要目的是介绍简单的方式切换,并且指出一些容易发生的一些小错误。

Windows 系统切换方法

手动配置环境变量(传统方法)

1.下载完jdk17后,可以将其与jdk8放在同一文件下。

 2.右击我的电脑进入环境配置,一般我们配置好的jdk1.8为以下

3. 同样的原理,点击新建,起个变量名JDK17,找到下载jdk17的路径复制到变量值,点击确定。

4. 我们之前配置jdk8可能是下面这个变量值,有些人的是jdk8的路径,建议用下面这个方法,因为这是傻瓜的精髓。

5. win+r输入cmd输入java -version(中间空格)会出现下面证明此时正是jdk8版本

 6.回到环境变量只需将%JDK8%改为%JDK17%即可(8改17傻瓜不),点击确认,然后重新打开win+r(必须重新打开)按照5进行会出现以下,证明已经切换成功。

注:有些人切换的时候并未切换到JDK17,我也遇到了这个问题,那是因为在Path中下载jdk17的时候自动给我们加了两行,只要删除这两行(这里我已经删除了,删除的与第一行相似,但是未删除前位于前两行),再重新打开win+r,按照5进行就会出现。

使用 JEnv for Windows

安装步骤:

# 1. 安装 Chocolatey(Windows 包管理器)
Set-ExecutionPolicy Bypass -Scope Process -Force
[System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072
iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1'))

# 2. 使用 Chocolatey 安装 JEnv
choco install jenv

# 3. 或者使用 Scoop 安装
scoop bucket add versions
scoop install jenv-win

配置和使用:

# 添加 JDK 到 JEnv
jenv add "C:\Java\jdk1.8.0_381" 1.8
jenv add "C:\Java\jdk-17.0.10" 17

# 查看已安装的 JDK
jenv versions

# 全局切换
jenv global 1.8    # 切换到 JDK 8
jenv global 17     # 切换到 JDK 17

# 本地目录切换(仅当前目录有效)
cd my-java8-project
jenv local 1.8

cd my-java17-project
jenv local 17

# 仅当前shell会话切换
jenv shell 17

macOS 系统切换方法

使用 Homebrew + jenv

步骤一:安装工具

# 1. 安装 Homebrew(如果未安装)
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

# 2. 安装 jenv
brew install jenv

# 3. 配置 shell(根据你的 shell)
# bash 用户
echo 'export PATH="$HOME/.jenv/bin:$PATH"' >> ~/.bash_profile
echo 'eval "$(jenv init -)"' >> ~/.bash_profile

# zsh 用户
echo 'export PATH="$HOME/.jenv/bin:$PATH"' >> ~/.zshrc
echo 'eval "$(jenv init -)"' >> ~/.zshrc

# 重新加载配置
source ~/.zshrc   # 或 source ~/.bash_profile

步骤二:安装多版本 JDK

# 方法1:使用 Homebrew 安装多个 JDK
brew tap homebrew/cask-versions
brew install --cask temurin8    # JDK 8
brew install --cask temurin17   # JDK 17

# 方法2:如果已手动安装,添加到 jenv
# 通常安装位置:
# JDK 8: /Library/Java/JavaVirtualMachines/jdk1.8.0_381.jdk/Contents/Home
# JDK 17: /Library/Java/JavaVirtualMachines/jdk-17.jdk/Contents/Home

jenv add /Library/Java/JavaVirtualMachines/jdk1.8.0_381.jdk/Contents/Home
jenv add /Library/Java/JavaVirtualMachines/jdk-17.jdk/Contents/Home

步骤三:使用 jenv 管理

# 查看所有可用的 JDK
jenv versions

# 设置全局默认版本
jenv global 1.8.0.381
# 或
jenv global 17.0

# 设置项目特定版本
cd ~/projects/java8-project
jenv local 1.8.0.381

cd ~/projects/java17-project
jenv local 17.0

# 查看当前使用的版本
jenv version

# 在当前 shell 会话中临时切换
jenv shell 17.0

Linux 系统切换方法

使用 update-alternatives(Ubuntu/Debian)

# 1. 安装两个 JDK(如果未安装)
sudo apt update
sudo apt install openjdk-8-jdk openjdk-17-jdk

# 2. 注册到 alternatives 系统
sudo update-alternatives --install "/usr/bin/java" "java" "/usr/lib/jvm/java-8-openjdk-amd64/bin/java" 1
sudo update-alternatives --install "/usr/bin/java" "java" "/usr/lib/jvm/java-17-openjdk-amd64/bin/java" 2

sudo update-alternatives --install "/usr/bin/javac" "javac" "/usr/lib/jvm/java-8-openjdk-amd64/bin/javac" 1
sudo update-alternatives --install "/usr/bin/javac" "javac" "/usr/lib/jvm/java-17-openjdk-amd64/bin/javac" 2

# 3. 切换版本
sudo update-alternatives --config java
# 会显示:
# 有 2 个候选项可用于替换 java (提供 /usr/bin/java)。
# 
#   选择       路径                                          优先级  状态
# ------------------------------------------------------------
# * 0            /usr/lib/jvm/java-17-openjdk-amd64/bin/java   2       自动模式
#   1            /usr/lib/jvm/java-8-openjdk-amd64/bin/java    1       手动模式
#   2            /usr/lib/jvm/java-17-openjdk-amd64/bin/java   2       手动模式
# 
# 要维持当前值[*]请按<回车键>,或者键入选择的编号:

# 同样切换 javac
sudo update-alternatives --config javac

# 4. 验证
java -version
javac -version

IDE 中的版本切换

IntelliJ IDEA 配置

项目级配置:

File → Project Structure (Ctrl+Alt+Shift+S)
  → Project Settings → Project
    → Project SDK: 添加多个 JDK
    → Project language level: 选择对应版本
  
  → Project Settings → Modules
    → 每个模块可以单独设置 SDK

运行配置:

Run → Edit Configurations
  → 选择要修改的运行配置
  → 右侧找到 "JRE"
  → 选择对应的 JDK 版本
  
或者:
Alt+Shift+F10 → Edit Configurations

全局配置:

File → Settings (Ctrl+Alt+S)
  → Build, Execution, Deployment
    → Build Tools → Gradle/Maven
      → Gradle JVM: 选择 JDK 版本

Eclipse 配置

1. 添加多个 JDK
   Window → Preferences
     → Java → Installed JREs
       → Add... → Standard VM
       → 选择 JDK 安装目录

2. 项目级配置
   右键项目 → Properties
     → Java Build Path → Libraries
       → JRE System Library → Edit...
         → 选择 Alternate JRE

3. 运行配置
   Run → Run Configurations
     → Java Application
       → 选择要配置的类
       → JRE 标签页
         → 选择 Runtime JRE

VSCode 配置

settings.json 配置:

{
  "java.configuration.runtimes": [
    {
      "name": "JavaSE-1.8",
      "path": "C:\\Java\\jdk1.8.0_381",
      "default": false
    },
    {
      "name": "JavaSE-17",
      "path": "C:\\Java\\jdk-17.0.10",
      "default": true
    }
  ],
  
  // 工作区特定设置
  "java.jdt.ls.java.home": "C:\\Java\\jdk-17.0.10",
  
  // Maven 配置
  "java.configuration.maven.userSettings": "C:\\path\\to\\settings.xml",
  "maven.terminal.customEnv": [
    {
      "environmentVariable": "JAVA_HOME",
      "value": "C:\\Java\\jdk-17.0.10"
    }
  ]
}

工作区 .vscode/settings.json

{
  // 这个项目使用 Java 8
  "java.configuration.runtimes": [
    {
      "name": "JavaSE-1.8",
      "path": "/usr/lib/jvm/jdk1.8.0_381",
      "default": true
    }
  ],
  "java.home": "/usr/lib/jvm/jdk1.8.0_381"
}

常见问题解决

问题1:切换后版本没变

# 原因:PATH 中有其他 java
echo $PATH | tr ':' '\n'
which -a java   # 查看所有 java 命令位置

# 解决:确保正确的路径在前面
export PATH="$JAVA_HOME/bin:$PATH"

问题2:IDE 不使用系统设置的 JAVA_HOME

解决:
1. IDE 内重新配置 SDK
2. 重启 IDE
3. 清理 IDE 缓存
4. 检查 IDE 的配置文件

总结建议

  • 个人开发推荐:使用 SDKMAN!(Linux/macOS)或 jenv(Windows)

  • 团队开发推荐:统一使用 Docker 容器化,确保环境一致

通过以上方法,你可以轻松地在不同项目和场景间切换 JDK 1.8 和 JDK 17,提高开发效率并避免版本冲突。

到此这篇关于JDK1.8与JDK17多版本共存相互切换(windows、macOS、Linux、IDE)的文章就介绍到这了,更多相关JDK1.8与JDK17自由切换内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Java方法参数装配顺序详解

    Java方法参数装配顺序详解

    这篇文章主要介绍了Java方法参数装配顺序详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-03-03
  • 如何解决java:错误:无效的源发行版:17问题

    如何解决java:错误:无效的源发行版:17问题

    这篇文章主要介绍了如何解决java:错误:无效的源发行版:17问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-07-07
  • SpringBatch数据写入实现

    SpringBatch数据写入实现

    Spring Batch通过ItemWriter接口及其丰富的实现,提供了强大的数据写入能力,本文主要介绍了SpringBatch数据写入实现,具有一定的参考价值,感兴趣的可以了解一下
    2025-04-04
  • 解决SpringBoot加载application.properties配置文件的坑

    解决SpringBoot加载application.properties配置文件的坑

    这篇文章主要介绍了SpringBoot加载application.properties配置文件的坑,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-08-08
  • logback TimeBasedRollingPolicy按天生成日志源码解析

    logback TimeBasedRollingPolicy按天生成日志源码解析

    这篇文章主要为大家介绍了logback TimeBasedRollingPolicy按天生成日志源码解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-11-11
  • Java时间轮算法的实现代码示例

    Java时间轮算法的实现代码示例

    本篇文章主要介绍了Java时间轮算法的实现代码示例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-08-08
  • 关于spring boot中几种注入方法的一些个人看法

    关于spring boot中几种注入方法的一些个人看法

    这篇文章主要给大家介绍了关于spring boot中几种注入方法的一些个人看法,文中通过示例代码介绍的非常详细,对大家学习或者使用spring boot具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-07-07
  • SpringBoot接入ftp/ftps并上传文件和配置的代码指南

    SpringBoot接入ftp/ftps并上传文件和配置的代码指南

    接入ftp服务器,在springboot上实现起来也不算复杂,本文主要讲下如何在springboot下接入ftp服务上传文件,并对出现的问题做一些记录,ftp服务的参数配置等,需要的朋友可以参考下
    2024-12-12
  • Swagger-boostrap-ui如何配置用户名密码访问

    Swagger-boostrap-ui如何配置用户名密码访问

    这篇文章主要介绍了Swagger-boostrap-ui如何配置用户名密码访问,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-05-05
  • Java实现世界上最快的排序算法Timsort的示例代码

    Java实现世界上最快的排序算法Timsort的示例代码

    Timsort 是一个混合、稳定的排序算法,简单来说就是归并排序和二分插入排序算法的混合体,号称世界上最好的排序算法。本文将详解Timsort算法是定义与实现,需要的可以参考一下
    2022-07-07

最新评论