问题:什么?都1202年了,你还装不上JDK,还不能解决?还不知道怎么快捷切换JDK版本?
摘要:本文以Win10为例,例举安装JDK常遇见的问题,以及如何编写脚本快捷切换JDK。
现象:在终端输入"java"后,提示"‘java’不是内部或外部命令,也不是可运行的程序或批处理文件"。
分析:现象很明显,也就是说计算机未识别到Java,说白了就是从Path变量中未搜索到你安装的Java。
如何解决:根据如上思路,检查Path变量与JAVA_HOME变量的联系是否正确
问题2、"java -version"输出版本与"JAVA_HOME"不一致1、查看Path变量是否有指向JAVA_HOME变量的引用
2、查看JAVA_HOME变量是否正确(看看此目录是否正确)
现象:原安装版本为JDK7,安装JDK8并更改JAVA_HOME变量后,终端输入"java -version"输出仍为JDK7的信息。
分析:说明计算机仍然识别的是旧版本的JDK7,不用说,肯定是Path变量识别到的Java是旧的。
如何解决:查看Java的路径,并删除Path变量中除正确的那条其他所有定义了Java相关的变量
2、自动化切换JDK1、查看哪里有Java
2、去Path变量中删除除最后一条外的所有变量(应该在Path变量的顶部,Path读取变量按顺序来的)
当我们电脑需要安装多个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的编码与终端保持一致就好了
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)