JDK安装中常遇见的一些问题以及自动化脚本切换JDK版本

JDK安装中常遇见的一些问题以及自动化脚本切换JDK版本,第1张

JDK安装中常遇见的一些问题以及自动化脚本切换JDK版本

问题:什么?都1202年了,你还装不上JDK,还不能解决?还不知道怎么快捷切换JDK版本?
摘要:本文以Win10为例,例举安装JDK常遇见的问题,以及如何编写脚本快捷切换JDK。

1、常见问题 问题1、未识别"java"命令

现象:在终端输入"java"后,提示"‘java’不是内部或外部命令,也不是可运行的程序或批处理文件"。
分析:现象很明显,也就是说计算机未识别到Java,说白了就是从Path变量中未搜索到你安装的Java。
如何解决:根据如上思路,检查Path变量与JAVA_HOME变量的联系是否正确

1、查看Path变量是否有指向JAVA_HOME变量的引用

2、查看JAVA_HOME变量是否正确(看看此目录是否正确)

问题2、"java -version"输出版本与"JAVA_HOME"不一致

现象:原安装版本为JDK7,安装JDK8并更改JAVA_HOME变量后,终端输入"java -version"输出仍为JDK7的信息。
分析:说明计算机仍然识别的是旧版本的JDK7,不用说,肯定是Path变量识别到的Java是旧的。
如何解决:查看Java的路径,并删除Path变量中除正确的那条其他所有定义了Java相关的变量

1、查看哪里有Java

2、去Path变量中删除除最后一条外的所有变量(应该在Path变量的顶部,Path读取变量按顺序来的)

2、自动化切换JDK

当我们电脑需要安装多个Java的时候,比如我,在公司旧的版本代码使用"JDK7和eclipse",但是新版本代码使用"JDK8和idea",每次移植代码或者测试代码时就必须手动更改JAVA_HOME变量,十分麻烦,因此在Windows环境中可以编写批处理文件来快捷的切换JDK。

编写思路

通过编写批处理文件"SwitchJDK.bat"来更改系统环境变量,我的设想是设计成一个菜单选项,可以选择版本进行切换!这里简单说明一下本bat中要使用的重要命令,不懂的就百度或查看文档。

# TITLE:为bat打开的终端命名。输入"TITLE /?"查看说明
# COLOR:设置bat打开的终端的字体颜色及背景,输入"COLOR /?"查看说明
# CLS: 清屏,输入"CLS /?"查看说明
# ECHO:显示消息,输入"ECHO /?"查看说明
# SET:显示,设置或删除cmd.exe环境变量,输入"SET /?"查看说明
# SETX:创建或修改环境变量,包括用户环境变量和系统环境变量,输入"SETX /?"查看说明
# CALL:调用函数或批处理文件
# IF - ELSE 结构
# 1.函数(含参或否)的定义及其调用
# 2.字符,数字类型变量的比较
# 3.代码的注释
脚本代码

话不多说,直接上代码,仅代表个人思路,欢迎各位进一步完善!

@ECHO OFF
CLS
TITLE 切换JDK
COLOR 07

SET CUR_JAVA_HOME="%JAVA_HOME%"
ECHO 当前JAVA_HOME变量的值为:%CUR_JAVA_HOME%

:Menu
ECHO    ========== 选中 - 右键 - 以管理员权限执行 ==========
ECHO    1. 切换到JDK_7.
ECHO.
ECHO    2. 切换到JDK_8.
ECHO.
ECHO    3. 切换到JDK_11.
ECHO.
ECHO    4. 切换到JDK_17.
ECHO.
ECHO    Q. 退出!
ECHO    ====================================================

:ChoiceOperation
SET choice=
SET /p choice=选择:
IF NOT "%choice%"=="" SET choice=%choice:~0,1%
IF /i "%choice%"=="1" (
  CALL :SwitchJDK 7 "D:Program FilesJavajdk1.7.0_80"
) ELSE IF /i "%choice%"=="2" (
  CALL :SwitchJDK 8 "D:Program FilesJavajdk1.8.0_311"
) ELSE IF /i "%choice%"=="3" (
  CALL :SwitchJDK 11 "D:Program FilesJavajdk-11.0.12"
) ELSE IF /i "%choice%"=="4" (
  CALL :SwitchJDK 17 "D:Program FilesJavajdk-17.0.1"
) ELSE IF /i "%choice%"=="Q" (
  GOTO GameOver
) ELSE (
  ECHO Invalid input, again please!
  GOTO Menu
)

:SwitchJDK
SET DES_VERSION=%1
SET DES_JAVA_HOME=%2
IF %CUR_JAVA_HOME%==%DES_JAVA_HOME% (
  ECHO 当前JDK版本与目的JDK版本相同,无需修改!
  GOTO Menu
) ELSE (
  :: SETX命令修改的变量在新窗口生效,因此切换完成后最好关闭此程序!
  SETX JAVA_HOME %DES_JAVA_HOME% /M
  ECHO 当前JDK版本已切换为%DES_VERSION%!
  GOTO GameOver
)

:GameOver
PAUSE
结果验证

1:需要以管理员权限运行此bat,否则会报错:“错误,拒绝访问注册表路径”。
2:如果运行此bat显示乱码,更改一下bat的编码与终端保持一致就好了

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5522488.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-13
下一篇 2022-12-13

发表评论

登录后才能评论

评论列表(0条)

保存