【java】JDK8 + JDK17 绿色解压共存方案-全程不修改任何系统环境变量

文章目录

JDK8 + JDK17 绿色解压共存方案【全程不修改任何系统环境变量】

核心:不新建JAVA_HOME、不改动Path;纯绿色解压,不写注册表,两个JDK完全隔离,互不冲突。

存放根目录:D:\data\env

  • JDK8:D:\data\env\jdk8
  • JDK17:D:\data\env\jdk17

✅ 一、下载(Eclipse Temurin,免费商用,选ZIP绿色包)

官网:https://adoptium.net/zh-CN/temurin/releases

  • Version:8 / 17
  • OS:Windows
  • Package:JDK(不要JRE!JRE无javac)
  • Arch:x64
  • 文件类型:ZIP

直链:

  1. JDK17 Windows x64 ZIP
    https://github.com/adoptium/temurin17-binaries/releases/download/jdk-17.0.20.1+1/OpenJDK17U-jdk_x64_windows_hotspot_17.0.20.1_1.zip
  2. JDK8 Windows x64 ZIP
    https://github.com/adoptium/temurin8-binaries/releases/download/jdk8u422-b05/OpenJDK8U-jdk_x64_windows_hotspot_8u422b05.zip

✅ 二、解压部署(重点,防止多层嵌套)

  1. D盘手动创建文件夹 D:\data\env
  2. 解压zip包,取出里面内层jdk文件夹 ,放到env目录下
    • JDK8解压完成后:D:\data\env\jdk8\bin\java.exe 必须存在
    • JDK17解压完成后:D:\data\env\jdk17\bin\java.exe 必须存在

❌ 错误:D:\data\env\jdk17\jdk-17.0.20\bin,多层嵌套会导致路径错误。

目录树:

复制代码
D:\data\env
├─ jdk8
└─ jdk17

✅ 三、使用方式(3种,全部不改动系统环境变量)

方式1:直接写绝对路径(最简单,推荐临时少量命令)

直接在CMD/PowerShell写完整路径调用java、javac

cmd 复制代码
# 查看JDK17版本
"D:\data\env\jdk17\bin\java.exe" -version
"D:\data\env\jdk17\bin\javac.exe" -version

# 查看JDK8版本
"D:\data\env\jdk8\bin\java.exe" -version
"D:\data\env\jdk8\bin\javac.exe" -version

编译运行示例(JDK17编译Hello.java)

cmd 复制代码
"D:\data\env\jdk17\bin\javac.exe" D:\test\Hello.java
"D:\data\env\jdk17\bin\java.exe" D:\test\Hello

方式2:临时注入PATH(当前终端窗口简写java,关闭窗口失效,不改系统)

打开CMD,执行下面任意一组,当前窗口就可以直接敲java,关闭CMD自动消失

cmd 复制代码
::当前窗口切换为 JDK17
set PATH=D:\data\env\jdk17\bin;%PATH%
java -version
javac -version
cmd 复制代码
::当前窗口切换为 JDK8
set PATH=D:\data\env\jdk8\bin;%PATH%
java -version
javac -version

方式3:一键启动对应JDK终端脚本(推荐!最舒服)

在D:\data\env新建2个bat文件,双击直接打开一个已经加载好对应JDK的CMD窗口,完全不修改系统

脚本1:StartJdk17.bat
bat 复制代码
@echo off
chcp 65001
set PATH=D:\data\env\jdk17\bin;%PATH%
echo ==================================
echo 当前终端已加载 JDK17
echo 关闭窗口就失效,不修改系统环境变量
echo ==================================
cmd
脚本2:StartJdk8.bat
bat 复制代码
@echo off
chcp 65001
set PATH=D:\data\env\jdk8\bin;%PATH%
echo ==================================
echo 当前终端已加载 JDK8
echo 关闭窗口就失效,不修改系统环境变量
echo ==================================
cmd

使用:双击StartJdk17.bat,弹出新CMD,直接敲java、javac就是jdk17;双击另一个就是jdk8。互不干扰。

✅ 四、IDEA开发使用(强烈推荐,IDE不依赖系统环境变量)

IDEA项目可以独立指定JDK,不受系统任何环境变量影响:

  1. File → Project Structure → Project SDK
  2. Add SDK → Add JDK
  3. 选择目录:D:\data\env\jdk17 或者 D:\data\env\jdk8

效果:项目A用JDK8,项目B用JDK17,完全隔离。

✅ 五、卸载

直接删除文件夹:D:\data\env\jdk8 或者 D:\data\env\jdk17

因为没有修改系统环境变量,无需清理注册表、环境变量。

✅ 六、优缺点总结

✅ 优点

  1. 零污染系统,不新增JAVA_HOME,不改Path;随时删除,不留垃圾
  2. JDK8/JDK17完全隔离,永远不会出现版本冲突
  3. 绿色解压,可拷贝整个env文件夹到其他电脑直接使用

❌ 缺点

  1. 不配置全局环境变量,新开空白CMD默认无法直接敲java,需要用脚本或写绝对路径
  2. 如果需要在gitbash、maven等工具全局调用java,需要单独在工具内配置路径

✅ 七、常见坑

  1. 路径带空格/中文:你的D:\data\env无空格中文,没问题;加引号是好习惯
  2. 下载成JRE:JRE没有javac,下载必须选JDK
  3. 多层解压嵌套:解压后确认xxx\bin\java.exe直接存在
  4. bat脚本乱码:脚本第一行chcp 65001解决中文乱码

✅ 八、Maven/Gradle使用补充(不设置系统环境变量)

如果用maven,修改maven的conf/settings.xml或者在脚本里临时指定JAVA_HOME:

bat 复制代码
@echo off
chcp 65001
set JAVA_HOME=D:\data\env\jdk17
set PATH=%JAVA_HOME%\bin;%PATH%
cmd

maven读取当前窗口临时JAVA_HOME,不会改动系统。

相关推荐
java、iOS、Vue2 小时前
Maven antrun vs Jenkins 脚本组装 deb的优缺点、适用场景
java·jenkins·maven
hudd6682 小时前
JavaEE 初阶 - 多线程(初阶)
java·开发语言·java-ee
I Am a robert girl2 小时前
稀有事件估计的迭代去对齐:从源码视角拆解重要性采样新范式
开发语言·python·机器学习·重要性采样·蒙特卡洛方法·稀有事件估计
CarIise2 小时前
Java实训阶段查漏补缺复习笔记2
java·linux·算法
Wang's Blog2 小时前
Java框架 SpringCloud 快速入门: Feign 的性能优化
java·spring cloud·性能优化
golang学习记2 小时前
rust开发,选VS Code还是RustRover?
开发语言·后端·rust
蛋蛋的就会顺顺的2 小时前
hot100——二叉树
java·数据结构·算法·leetcode·力扣
打工仔折腾 AI3 小时前
System Prompt 替代 Few-shot:用规则约束大模型输出的省钱实践
java·人工智能·python·spring·langchain·prompt·ai agent 实战
打工仔折腾 AI3 小时前
从零写一个CAD 05:以鼠标为中心的滚轮缩放,招法能复用但顺序不能反
开发语言·后端·python·性能优化·计算机外设·swift·ai agent 实战