java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > JDK1.8与JDK17自由切换

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

作者: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 的配置文件

总结建议

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

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

您可能感兴趣的文章:
阅读全文