配置Java环境变量时的一个常见错误
我们在把JDK路径配置为环境变量时,有一个常用的配置方法,就是把JDK根路径配置为“JAVA_HOME”值,然后在Path中添加一条“%JAVA_HOME%\bin”值。这种方法很便于修改JDK的版本,只要在更换版本时调整JAVA_HOME的内容便可以。但是,这种配置方式往往会引发一个错误,下面详细说明这个错误。
错误表现
“JAVA_HOME”中不仅可以设置单个值,也可以像Path内容一样,用分号隔开,设置多个值。例如,计算机中有“9.0.1”和“15.0.1”两个版本的JDK,我们可以把两个版本的JDK都添加进“JAVA_HOME”中,如图:

当然,这样使用是没有错误的。但是,当我们想要从中删除一个值,只留下一个版本时,比如只留下“jdk-15.0.1”,那我们就会点击第二行,并点击右边的删除,此时,回到命令行使用java编译时,我们会发现,剩下的那个版本的jdk也不能被正确定位了。

错误溯源
定位到jdk的目录下,如果可以看到“java.dll”,“java.exe”,“javac.exe”等文件都是存在的,说明该错误的原因不是jdk被破坏。回忆一下刚才删除“JAVA_HOME”值的操作,此时再查看“JAVA_HOME”环境变量,并没有发现什么异常:

但是,打开“Path”环境变量的编辑界面,细心的话可以看到它从列表模式变成了编辑文本的模式:

在“Path”中存在多条环境变量的值时,变成编辑文本模式意味着它可能是有错误的。重新回到CMD中,输入echo %Path%命令,把Path环境变量打印到命令行进行查看,可以发现一个明显的错误,如图:

在箭头所示的地方,看到jdk的路径中错误地插入了一个分号,说明“%JAVA_PATH%”解析出来的文本串后面带上了一个分号。重新编辑“JAVA_HOME”环境变量,点击右下角的“编辑文本”按钮,在编辑文本模式中,我们发现结尾有一个显眼的分号:


把这个分号删除之后,保存,回到命令行调试,java命令正常运行了。

解决方法
当存在多条环境变量时,系统会自动地以分号分隔开它们,且不会带来异常。但是,当从多条环境变量删除到仅剩一条时,系统会遗留下一个分号。我们使用“%JAVA_HOME%\bin”这样的方式去配置Path时,由于“%JAVA_HOME%”直接解析为文本,遗留的分号就会带来错误。
如果原来的环境变量是多个值,想要删除到仅剩一个值时,一定要记得删除这个分号,或者直接用编辑文本模式去删除,以防止引入不必要的错误。

希望这篇文章可以帮助到大家!
附:
系统信息:版本 Windows 10 专业版
版本号 20H2
操作系统内部版本 19042.867
jdk版本
jdk-15.0.1
jdk-9.0.1
配置Java环境变量时的一个常见错误的更多相关文章
- Ubuntu中配置Java环境变量时,出现command not found问题解决记录
百度出Ubuntu中配置Java环境变量时,在利用sudo gedit /etc/profile 对profile编辑后, 在terminal中输入 sudo source /etc/profile, ...
- linux配置java环境变量(详细)
linux配置java环境变量(详细) 本文完全引用自: http://www.cnblogs.com/samcn/archive/2011/03/16/1986248.html 一. 解压安装jdk ...
- linux配置java环境变量
linux配置java环境变量(详细) 一. 解压安装jdk 在shell终端下进入jdk-6u14-linux-i586.bin文件所在目录, 执行命令 ./jdk-6u14-linux-i586. ...
- linux配置java环境变量(转)
linux配置java环境变量(详细) 一. 解压安装jdk 在shell终端下进入jdk-6u14-linux-i586.bin文件所在目录, 执行命令 ./jdk-6u14-linux-i586. ...
- linux配置java环境变量jdk jre(详细)【转】
linux配置java环境变量(详细) 本文完全引用自: http://www.cnblogs.com/samcn/archive/2011/03/16/1986248.html 一. 解压安装jdk ...
- linux配置java环境变量(详细)(转)
linux配置java环境变量(详细) 一. 解压安装jdk 在shell终端下进入jdk-6u14-linux-i586.bin文件所在目录, 执行命令 ./jdk-6u14-linux-i586. ...
- JDK的安装与配置java环境变量
JDK安装与配置java环境变量 安装JDK 1.百度搜索jdk8找到下载地址 下载地址:Java SE Development Kit 8 - Downloads (oracle.com) 2.点击 ...
- [知了堂学习笔记]_牵线Eclipse和Tomcat第一篇 —— 配置Java环境变量&&安装eclipse
一.先给他们提供一个"浪漫的"环境,比如传说中的"鹊桥"--java环境变量.哈哈! 配置java环境变量. 下载jdk,根据自己电脑的版本和操作位数选择不同的 ...
- 第一天学JAVA,下载JDK,配置JAVA环境变量!!!
步骤一:下载JDK https://www.oracle.com 我们首先进入到这个网站下载我们运行JAVA的所必须的JDK 进入到这个网站按照图示进入到下一个页面 因为刚学JAVA,我们的JDK版本 ...
随机推荐
- Express vs Koa
Express vs Koa https://www.esparkinfo.com/express-vs-koa.html https://www.cleveroad.com/blog/the-bes ...
- Taro 框架实现原理
Taro 框架实现原理 小程序 H5 RN Web 多端框架 Taro 1.x & Taro 2.x 编译型架构, 语法编译转换 Taro 1/2 属于编译型架构,主要通过对类 React 代 ...
- c++ 动态解析PE导出表
测试环境是x86 main #include <iostream> #include <Windows.h> #include <TlHelp32.h> #incl ...
- 开始 nx
官网 video 详解Nx, 必读 配置代理 每次创建lib都要重启编辑器 创建项目 选择empty,然后选择Angular CLI 因为可以使用Angular Console λ npm init ...
- 记一个关于std::unordered_map并发访问的BUG
前言 刷题刷得头疼,水篇blog.这个BUG是我大约一个月前,在做15445实现lock_manager的时候遇到的一个很恶劣但很愚蠢的BUG,排查 + 摸鱼大概花了我三天的时间,根本原因是我在使用s ...
- Linux fork()一个进程内核态的变化
[前言]用户态的变化,耳熟能详不在赘述.现在支持读时共享,写时复制. 一.内核态的变化 1.fork一个子进程代码 #include <stdio.h> #include <stdl ...
- 微信小程序onReachBottom第二次失效
当整个页面就是一个view包着一个轮播.一个横向scroll-view和一个纵向scroll-view onReachBottom方法只执行一次 解决方法:
- Elastic App Search 快速构建 ES 应用
公号:码农充电站pro 主页:https://codeshellme.github.io App Search 是 Elastic 家族中的一个产品,它可以帮助我们(基于 ES)快速高效的构建搜索应用 ...
- 如何使用 HttpReports 监控 .NET Core 应用程序
简介 HttpReports 基于.NET Core 开发的APM监控系统,使用MIT开源协议,主要功能包括,统计, 分析, 可视化, 监控,追踪等,适合在中小项目中使用. github:https: ...
- Python3基础-目录
Python3基础-目录(Tips:长期更新Python3目录) 第一章 初识Python3 1.1 Python3基础-前言 1.2 Python3基础-规范 第二章 Python3内置函数&a ...