【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,不会改动系统。

相关推荐
2501_944521595 小时前
Ramda 跨端三方库仓颉适配全流程
开发语言·javascript·flutter·php
行思理5 小时前
go语言学习难度及适合学习的人群
开发语言·学习·golang
wangchunyu1146 小时前
JAVA CompletableFuture异步编程实战
java·开发语言·python
paopaokaka_luck7 小时前
流浪动物救助与收养系统(DeepSeek AI对话、 ECharts多维分析、救助流程衔接、领养与回访衔接、 捐赠确认与公示、志愿者协作)
java·前端·javascript·人工智能·mysql·echarts·推荐算法
Thomas.Sir7 小时前
第9课:SpringBoot4.x Web开发基础:WebMvc自动配置、静态资源、请求参数接收
java·spring boot
程序 代码狂人7 小时前
切片表与分区表的区别(数据开发面试版)
java·大数据·开发语言·数据仓库·算法
2501_944521598 小时前
Deepmerge 跨端三方库仓颉适配全流程
java·python·eclipse·github
meiying88389 小时前
快递单号批量查询Python脚本:从手动到自动化的完整实现
开发语言·python·自动化
@大迁世界10 小时前
告别 Go,拥抱 Rust
开发语言·golang·rust
SEO_juper10 小时前
Node.js 重定向链检测工具:301 跳了几跳、有没有成环,一次看清
xml·开发语言·python·node.js·json·bash