*********************************************************************************************
方案一:
*********************************************************************************************
一、下载JDK
# JDK 8 (1.8.0_381)
https://www.oracle.com/java/technologies/javase/javase8u211-later-archive-downloads.html
# JDK 17 (LTS)
https://www.oracle.com/java/technologies/javase/jdk17-archive-downloads.html
# 或使用OpenJDK(推荐)
# Adoptium(原AdoptOpenJDK)
https://adoptium.net/temurin/releases/
# 或Amazon Corretto
https://aws.amazon.com/cn/corretto/
二、安装到不同目录
# 建议目录结构
C:\Java\jdk1.8.0_381\ # JDK 8
C:\Java\jdk-17.0.9\ # JDK 17
安装注意事项:
-
安装时选择自定义目录
-
不要安装公共JRE(避免冲突)
-
保持目录结构清晰
三、环境变量配置
右键"此电脑" → 属性 → 高级系统设置 → 环境变量
# 1. 创建 JAVA_HOME_8 和 JAVA_HOME_17 JAVA_HOME_8 = C:\Java\jdk1.8.0_381 JAVA_HOME_17 = C:\Java\jdk-17.0.9
# 2. JAVA_HOME(设置为默认版本,如JDK 17) JAVA_HOME = %JAVA_HOME_17%
# 3. Path 配置(重要!)
# 将 %JAVA_HOME%\bin 放在最前面
# 确保顺序:JDK bin > 其他Java相关 Path = %JAVA_HOME%\bin;其他路径...
************************************************************************************************
方案二:批处理脚本动态切换(最实用)
************************************************************************************************
创建切换脚本
:: switch-jdk.bat @echo off echo ======================================== echo JDK Version Switcher echo ======================================== echo. echo 1. Java 8 (1.8.0_381) echo 2. Java 17 (17.0.9) echo 3. Show current Java version echo 4. Exit echo. set /p choice="Please choose [1-4]: " if "%choice%"=="1" goto java8 if "%choice%"=="2" goto java17 if "%choice%"=="3" goto show if "%choice%"=="4" goto end :java8 setx JAVA_HOME "C:\Java\jdk1.8.0_381" /M setx Path "%SystemRoot%\system32;%JAVA_HOME%\bin;其他原有路径" /M echo Switched to Java 8 goto refresh :java17 setx JAVA_HOME "C:\Java\jdk-17.0.9" /M setx Path "%SystemRoot%\system32;%JAVA_HOME%\bin;其他原有路径" /M echo Switched to Java 17 goto refresh :show java -version pause goto end :refresh echo. echo Please restart Command Prompt or restart system to apply changes. echo. echo Current JAVA_HOME: %JAVA_HOME% echo. java -version pause :end
更强大的版本管理脚本
:: jenv.bat - 增强版
@echo off
setlocal enabledelayedexpansion
:: JDK目录配置
set JDK8=C:\Java\jdk1.8.0_381
set JDK11=C:\Java\jdk-11.0.20
set JDK17=C:\Java\jdk-17.0.9
set JDK21=C:\Java\jdk-21
:: 显示当前版本
echo Current Java Version:
java -version 2>&1 | findstr "version"
echo.
:: 参数处理
if "%1"=="" goto menu
if "%1"=="8" set NEW_JDK=%JDK8% & goto switch
if "%1"=="11" set NEW_JDK=%JDK11% & goto switch
if "%1"=="17" set NEW_JDK=%JDK17% & goto switch
if "%1"=="21" set NEW_JDK=%JDK21% & goto switch
if "%1"=="list" goto list
goto error
:menu
echo Usage: jenv [version]
echo Available versions: 8, 11, 17, 21
echo.
echo Example: jenv 8 (switch to Java 8)
goto end
:list
echo Available Java versions:
dir C:\Java\ /B
goto end
:switch
:: 备份原始Path
for /f "tokens=2*" %%a in ('reg query "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v Path 2^>nul') do set OLD_PATH=%%b
:: 移除所有JDK路径
set NEW_PATH=%OLD_PATH%
for %%j in ("%JDK8%" "%JDK11%" "%JDK17%" "%JDK21%") do (
set "JDK_BIN=%%~j\bin"
call set NEW_PATH=!NEW_PATH:%%JDK_BIN%%=!
)
:: 清理多余的分号
set NEW_PATH=%NEW_PATH:;;=;%
if "!NEW_PATH:~0,1!"==";" set NEW_PATH=!NEW_PATH:~1!
if "!NEW_PATH:~-1!"==";" set NEW_PATH=!NEW_PATH:~0,-1!
:: 添加新的JDK
set NEW_PATH=%NEW_JDK%\bin;%NEW_PATH%
:: 更新环境变量
reg add "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v JAVA_HOME /t REG_SZ /d "%NEW_JDK%" /f
reg add "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v Path /t REG_EXPAND_SZ /d "%NEW_PATH%" /f
echo Successfully switched to Java %1
echo JAVA_HOME set to: %NEW_JDK%
goto end
:error
echo Error: Invalid version "%1"
goto menu
:end
endlocal
**********************************************************************
方案3:IDE配置多版本(开发常用)
*************************************************************************************************
telliJ IDEA配置
<!-- 设置JDK版本 --> File → Project Structure → SDKs → + → Add JDK
多模块项目配置:
<!-- 不同模块使用不同JDK --> Module1 (Legacy) → JDK 1.8 Module2 (New) → JDK 17
运行配置:
Run → Edit Configurations → JRE 选择特定版本的JDK
Eclipse配置
Window → Preferences → Java → Installed JREs Add → Standard VM → 选择JDK目录
**************************************************************************
方案4:使用版本管理工具(现代方式)
******************************************************************************************************
1. SDKMAN!(Windows需要WSL)
# 在WSL中安装SDKMAN curl -s "https://get.sdkman.io" | bash source "$HOME/.sdkman/bin/sdkman-init.sh" # 安装多个Java版本 sdk list java # 查看可用版本 sdk install java 8.0.381-tem sdk install java 17.0.9-tem # 切换版本 sdk use java 8.0.381-tem sdk use java 17.0.9-tem # 设置默认版本 sdk default java 17.0.9-tem
2. Jabba(跨平台)
# Windows PowerShell安装
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
Invoke-Expression (New-Object Net.WebClient).DownloadString('https://github.com/shyiko/jabba/raw/master/install.ps1')
# 使用
jabba install openjdk@1.8.0
jabba install openjdk@17
jabba use openjdk@1.8.0
jabba use openjdk@17
六、验证安装和切换
创建测试脚本
:: test-java.bat @echo off echo ===== Java Version Information ===== echo. echo 1. JAVA_HOME: echo %JAVA_HOME% echo. echo 2. Java Version: java -version echo. echo 3. Javac Version: javac -version echo. echo 4. Full Java Info: java -XshowSettings:properties -version 2>&1 | findstr "java.home" echo. echo 5. All Java-related environment variables: set | findstr /i java echo. pause
验证命令
# 检查当前Java版本 java -version # 检查Javac版本 javac -version # 查看Java安装路径 where java where javac # 查看所有Java进程 jps -l
七、Maven/Gradle项目配置
Maven多版本配置
<!-- pom.xml -->
<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<!-- 或 -->
<maven.compiler.release>17</maven.compiler.release>
</properties>
<!-- 使用Toolchains支持多JDK -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-toolchains-plugin</artifactId>
<configuration>
<toolchains>
<jdk>
<version>1.8</version>
<vendor>oracle</vendor>
</jdk>
<jdk>
<version>17</version>
<vendor>oracle</version>
</jdk>
</toolchains>
</configuration>
</plugin>
.m2/toolchains.xml配置
<?xml version="1.0" encoding="UTF-8"?>
<toolchains>
<toolchain>
<type>jdk</type>
<provides>
<version>1.8</version>
<vendor>oracle</vendor>
</provides>
<configuration>
<jdkHome>C:\Java\jdk1.8.0_381</jdkHome>
</configuration>
</toolchain>
<toolchain>
<type>jdk</type>
<provides>
<version>17</version>
<vendor>oracle</vendor>
</provides>
<configuration>
<jdkHome>C:\Java\jdk-17.0.9</jdkHome>
</configuration>
</toolchain>
</toolchains>
八、常见问题解决
问题1:java命令无效
:: 检查环境变量 echo %JAVA_HOME% echo %Path% :: 手动设置临时环境变量 set PATH=C:\Java\jdk1.8.0_381\bin;%PATH%
问题2:版本混乱
:: 清理所有Java相关环境变量 set JAVA_HOME= set JRE_HOME= set CLASSPATH= :: 重新安装时完全卸载 1. 控制面板卸载所有Java 2. 删除C:\Program Files\Java 3. 删除环境变量 4. 重启后重新安装
问题3:IDE找不到JDK
# 在IDE中手动指定 - IntelliJ: File → Project Structure → SDKs - Eclipse: Window → Preferences → Java → Installed JREs - VS Code: 安装Java Extension Pack,配置java.home
九、最佳实践建议
目录结构示例
C:\Java\
├── jdk1.8.0_381\ # JDK 8
│ ├── bin\
│ ├── lib\
│ └── ...
├── jdk-11.0.20\ # JDK 11
├── jdk-17.0.9\ # JDK 17
├── jdk-21\ # JDK 21
├── scripts\ # 管理脚本
│ ├── switch-jdk.bat
│ ├── jenv.bat
│ └── test-java.bat
└── projects\ # 项目目录
├── legacy-project\ # 使用JDK 8
└── modern-project\ # 使用JDK 17
环境变量管理技巧
:: 使用setx永久设置 setx JAVA_HOME "C:\Java\jdk1.8.0_381" :: 使用set临时设置(仅当前会话) set JAVA_HOME=C:\Java\jdk1.8.0_381 set PATH=%JAVA_HOME%\bin;%PATH% :: 在批处理开头保存原始PATH set OLD_PATH=%PATH% :: 结束时恢复 set PATH=%OLD_PATH%
推荐配置方案
-
开发环境:使用批处理脚本切换(方案2)
-
CI/CD环境:直接安装多个JDK,通过JAVA_HOME控制
-
个人学习:使用SDKMAN或Jabba
-
企业环境:标准化安装目录,统一管理
十、性能监控和调优
查看各版本使用情况
:: 监控脚本
@echo off
echo Java processes:
jps -l
echo.
echo Java version used by each process:
for /f "tokens=1" %%i in ('jps -l ^| findstr /v "Jps"') do (
echo Process %%i:
wmic process where "ProcessId=%%i" get CommandLine | findstr java
)
清理旧版本缓存
:: 清理Maven本地仓库 rmdir /s /q %USERPROFILE%\.m2\repository :: 清理Gradle缓存 rmdir /s /q %USERPROFILE%\.gradle\caches
总结
最推荐的安装方案:
-
下载Adoptium的JDK 8和JDK 17
-
安装到
C:\Java\下的不同目录 -
使用批处理脚本动态切换
-
在IDE中为不同项目配置不同JDK
核心要点:
-
保持目录结构清晰
-
使用环境变量JAVA_HOME控制版本
-
将
%JAVA_HOME%\bin放在Path最前面 -
定期验证版本切换是否正确
这样你就可以在Windows 10上无缝使用Java 8和Java 17了!
2万+

被折叠的 条评论
为什么被折叠?



