Skip to content

bat脚本实现java版本切换

  • 目标效果:在windows上安装jdk8和jdk21,使用bat脚本对jdk的环境变量进行修改,从而实现jdk版本的切换

  • 安装jdk8和jdk21

    1. 官网地址 https://www.oracle.com/cn/java/technologies/downloads/

    2. 安装完毕后,分别新增jdk8的系统变量JAVA8_HOME和jdk21的系统变量JAVA21_HOME,二者的值就是其安装路径

      image-20250728202221569

    3. 然后新增一个名为JAVA_HOME的系统变量,值暂时指定为%JAVA8_HOME%

      image-20250728201513069

    4. 将JAVA_HOME添加到Path中

      image-20250728204345297

    5. 测试一下jdk8是否生效

      image-20250728201622742

    6. 再将JAVA_HOME的值改为%JAVA8_HOME%,并测试一下jdk21是否生效

      image-20250728202241415

      image-20250728202305418

    7. 接下来就是编写bat脚本,动态修改JAVA_HOME的值即可,想要切换版本为jdk8就将它的值改为%JAVA8_HOME%,同理jdk21就改为%JAVA21_HOME%

      bash
      @echo off
      
      setx JAVA_HOME "%JAVA8_HOME%" /M
      
      start cmd /k echo JAVA -version=8
      bash
      @echo off
      
      setx JAVA_HOME "%JAVA21_HOME%" /M
      
      start cmd /k echo JAVA -version=21
    8. 两个bat脚本都需要右键 → 管理员身份执行,如果不想每次都用管理员身份执行,可以为两个脚本创建快捷方式,然后修改快捷方式的高级属性,勾选管理员身份运行

      image-20250728205214106

      image-20250728205259629

  • bat脚本修改了JAVA_HOME的值(如下图所示,我的环境变量已经成功地从21的地址变成了8的地址),但是java -version依旧没变的问题解决方案

    • 问题原因:首先通过命令行执行where java发现,系统安装的oracle的jdk被写入了Path中,而java查找jdk时是按照从前到后依次查找,所以始终无法找到JAVA_HOME配置的jdk

      image-20250728203919366

      image-20250728204634601

    • 解决方案:所以修改Path的配置,将JAVA_HOME的配置上移到最上面

      image-20250728204420586

    • 另外:还有一种情况就是,安装某一特定版本的jdk时,会自动将 java.exe、javaw.exe、javaws.exe 复制到 C:\Windows\System32 目录下,这个目录在windows的环境变量中的优先级高于JAVA_HOME设置的环境变量的优先级,所以如果存在的话也要记得删除

参考文档

MIT版权,未经许可禁止任何形式的转载