windowsjava 多版本切换

转载至 https://zhuanlan.zhihu.com/p/442291304

1、下载

1.1、jdk下载地址

OpenJDK下载地址:http://jdk.java.net/

OracleJDK下载地址:https://www.oracle.com/java/technologies/downloads/

1.2、maven下载地址:

maven各版本下载地址:https://archive.apache.org/dist/maven/maven-3/

2、配置环境变量

2.1、安装

分别安装java6、java7、java8、jdk11、jdk17本地路径如下:

# java6
D:\java\java6\jdk1.6.0_45
D:\java\java6\jre6
# java7
D:\java\java7\jdk1.7.0_80
D:\java\java7\jre7
# java8
D:\java\java8\jdk1.8.0_181
D:\java\java8\jre1.8.0_181
# jdk11
D:\java\java11\jdk-11.0.10.9-hotspot
# jdk17
D:\java\java17\jdk-17

maven解压缩路径:

# maven
D:\maven\apache-maven-3.6.3

2.2、删除 C:\Windows\System32 下三个文件

在第一次安装jdk时,自动将java.exe、javaw.exe、javaws.exe三个可执行文件复制到了C:\Windows\System32目录,由于这个目录在Windows环境变量中的优先级高于JAVA_HOME设置的环境变量优先级。所以将C:\Windows\System32目录下的java.exe、javaw.exe、javaws.exe三个可执行文件 删除即可。

img

2.3、删除系统环境变量中安装jdk产生的javapath

在安装jdk的时候,安装过程中会在系统变量Path的最前面加上了C:\ProgramData\Oracle\Java\javapath;,这是安装jdk的时候带出来的,并且在Path的最前面,所以无论修改注册表还是Java控制台都没有用,执行的指令在系统变量中搜寻命令时最先找到的就是C:\ProgramData\Oracle\Java\javapath;

img

2.4、配置默认的环境变量

设置JAVA_HOME的作用

  • 方便引用,比如,你JDK安装在D:\java\java8\jdk1.8.0_181目录里,则设置JAVA_HOME为该目录路径, 那么以后你要使用这个路径的时候, 只需输入%JAVA_HOME%即可,避免每次引用都输入很长的路径串。
  • 归一原则, 当你JDK路径被迫改变的时候, 你仅需更改JAVA_HOME的变量值即可, 否则,你就要更改任何用绝对路径引用JDK目录的文档, 要是万一你没有改全, 某个程序找不到JDK, 可能会导致系统崩溃。
  • 第三方软件会引用JAVA_HOME变量。
JAVA_HOME
D:\java\java8\jdk1.8.0_181

2.5、配置CLASSPATH

CLASSPATH
.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;

2.6、配置PATH

【path路径加在最前面!!!】

设置PATH的作用:

当把%JAVA_HOME%\bin添加到PATH路径下, 这样, 我们在任何路径下就可以仅用java来执行命令,当在命令提示符窗口输入你个代码时,操作系统会在当前目录和PATH变量目录里查找相应的应用程序,并且执行。

PATH
%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;

2.7、配置maven环境变量

# 配置maven
M2_HOME
D:\maven\apache-maven-3.6.3
MAVEN_HOME
D:\maven\apache-maven-3.6.3
# 配置PATH
PATH
%M2_HOME%\bin;
%MAVEN_HOME%\bin;

3、bat脚本

3.1、编写脚本

@echo off
@echo ------------------------------------------------
@echo enter the version you want to change:
@echo options   version
@echo 6         JDK6
@echo 7         JDK7
@echo 8         JDK8
@echo 11        JDK11
@echo 17        JDK17
@echo ------------------------------------------------
set /P choose=please enter your choice:
IF "%choose%" EQU "6" (
    setx "JAVA_HOME" "D:\java\java6\jdk1.6.0_45" /m
    echo "JAVA_HOME" has been modified D:\java\java6\jdk1.6.0_45
) ELSE IF "%choose%" EQU "7" (
    setx "JAVA_HOME" "D:\java\java7\jdk1.7.0_80" /m
    echo "JAVA_HOME" has been modified D:\java\java7\jdk1.7.0_80
) ELSE IF "%choose%" EQU "8" (
    setx "JAVA_HOME" "D:\java\java8\jdk1.8.0_181" /m
    echo "JAVA_HOME" has been modified D:\java\java8\jdk1.8.0_181
) ELSE IF "%choose%" EQU "11" (
    setx "JAVA_HOME" "D:\java\java11\jdk-11.0.10.9-hotspot" /m
    echo "JAVA_HOME" has been modified D:\java\java11\jdk-11.0.10.9-hotspot
) ELSE IF "%choose%" EQU "17" (
    setx "JAVA_HOME" "D:\java\java17\jdk-17" /m
    echo "JAVA_HOME" has been modified D:\java\java17\jdk-17
)
pause

3.2、生成CJavaBat.bat快捷方式

右击CJavaBat.bat文件,发送到->桌面快捷方式,重命名为*CJavaBat*

img

3.3、给予***CJavaBat***文件管理员权限

右击CJavaBat文件,点击属性,点击快捷方式,点击高级,勾选用管理员身份运行,保存关闭。

img

3.4、运行脚本

双击CJavaBat文件,输入17,关闭窗口。使用win+X & ctrl +A 打开PowerShell,打开命令提示符,输入*java -version*mvn -v查看切换结果

img

img

4、取消自动更新

img

img

注意

1. java -version无效

jdk11之后没有jre目录,而变量执行java -version无效。需要进入jdk目录下执行此命令

bin\jlink.exe --module-path jmods --add-modules java.desktop --output jre

2.切换jdk后,java -version无效

修改环境变量时,在path内,%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin 需要在system32之前

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值