环境变量测试cmd下java命令报错问题
一、java环境变量简介
java环境变量的设置的目的有两个,第一个是 配置jre地址,也就是java程序运行环境;第二个是 配置JDK地址,也就是Java程序开发环境。一般安装完JDK后会有两个jre文件,第一个包含在JDK文件中如下图所示。
第二个jre文件在安装时会另外提示指定文件夹放置,例如我把要讲求指定的jre文件和jdk文件放在同一目录下(E盘)
JDK自带的jre称为专用jre,后面独立安装的jre称为公共jre,如果已经安装了JDK的话,其实是没必要再安装公共jre的,公共jre的作用是向系统和浏览器注册Java运行环境,以及提供了一些Java更新服务,可以不用再去单独安装这个公共jre。
二、JDK安装及环境变量配置
通过官网安装十分方便,这里给出转载的一个教程(安装即环境变量配置),或者自行百度教程即可,这里就不一一赘述。
JDK安装地址:https://www.oracle.com/technetwork/java/javase/downloads/index.html
三、安装测试
1.打开控制台
a.通过win+R->输入cmd 打开控制台
b.通过开始菜单->运行->输入“cmd” 打开控制台
2.测试命令
a.测试Java运行环境
在控制台下输入命令"java",成功案例如下图所示。
b.测试Java开发环境
在控制台下输入命令"javac",成功案例如下图所示。
四、测试失败分析
本文只分析“java”命令失败原因
1.失败现象
转载文章地址:http://www.cnblogs.com/yjmyzz/p/3521554.html
失败命令现象如下图所示:
错误为 “Error: could not open `E:\java\lib\amd64\jvm.cfg’ ”
通过控制端查看JAVA_HOME的值,如下图所示:
path环境变量内容如下,其中,%JAVA_HOME%\bin被习惯性的放置到了最后。:
2.问题分析
原来JDK如果执行过安装程序后,会在HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Runtime Environment\1.7.0_45\MSI\ 留下印记,里面有一项INSTALLDIR记录的还是当时安装的旧路径,如下图(转载的图):
图中的路径是存放独立jre的路径,在安装jdk的时候会提示,如下图(转载的图)所示:
如图示,未更改位置时jre被默认放置在C盘下,新建了一个名为java的文件去存放,当你修改位置时,存放文件的名字最好也为java,因为他在注册表中默认就是这么放的。若不是以java命名文件,等到你发出java指令,系统通过注册表中去访问位置时,会发现找不到文件。
就会出错,如之前所示错误为 “Error: could not open `E:\java\lib\amd64\jvm.cfg’ ”,这说明我把jre放在E盘下,默认用名为java的文件去存放他,再到我文件下看,果然名字不同,如下图所示:
按控制端所报的错误将文件名修改成java后,java命令执行成功。
所以一定要注意,以后要仔细看程序所报的错误
可能有朋友要问到,“我不是配置了环境变量吗,为什么系统还是自己到注册表中去查找然后执行”。如果你多找几个解决办法,可能会发现有这么一个方法——将”%JAVA_HOME%\bin“路径提到path路径最前面。
我试过,单做出这个改动也可使java命令执行成功,说明是优先级的问题,从注册表访问的路径的优先级大于”%JAVA_HOME%\bin“路径的优先级,将”%JAVA_HOME%\bin“命令提到path路径最前,让系统能先从此路径找到解决方法。
3.解决办法
终上所述,解决方法为
方法一
按照所报错误修改jre文件名,或单独放置一个jre文件到错误所示位置,使该路径有效。
方法二
将%JAVA_HOME%\bin提前,提前到path中的最前面,使其优先级高于注册表路径优先级。
方法三
修改注册表中java运行环境”HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Runtime Environment\“下的值,修改成你现在jre文件的路径,注册表我没修改过,不知道是否可行。