JDK环境变量配置详细解析

以前只知道傻傻的跟着教程配置jdk环境变量,
今天看了点资料,仔细的学习了一下,明白了为什么这么配置,还学了一些花里胡哨的玩意,
总结一下。

环境变量的配置过程(以Win10为例,大同小异)

1.右键单击“我的电脑”,单击“属性”,点开“高级系统设置”,点开它:
这里写图片描述

3.点上面的“高级”,然后点下面的“环境变量”,然后弹出来:
这里写图片描述

4.在下面找到Path,点击,然后“编辑”:
这里写图片描述

5.下面那一行,加上一行字:;xxxx\bin;
注意,开头和结尾各有一个分号
其中的xxxx是你的jdk安装目录,例如我的jdk安装目录是:“C:\Program Files\Java\jdk1.8.0_60”,那么我上面加上的一行就应该是;C:\Program Files\Java\jdk1.8.0_60\bin;
加上的一串字可以加在开头,也可以加在结尾,当然也可以加在中间,但是夹在中间是有一些要注意的地方的,所以不推荐,推荐的是加在开头
6.然后一路“确定”就ok了。
7.打开命令提示符(win+r后输入cmd即可),输入“javac”,如果出来下面的一大堆,就说明成功了。(如果不成功的话,请再(jin)试(zao)一(fang)遍(qi)。)
这里写图片描述

为什么要配置环境变量?

首先看看环境变量的解释:

环境变量(environment variables)一般是指在操作系统中用来指定操作系统运行环境的一些参数,如:临时文件夹位置和系统文件夹位置等。
  环境变量是在操作系统中一个具有特定名字的对象,它包含了一个或者多个应用程序所将使用到的信息。例如Windows和DOS操作系统中的path环境变量,当要求系统运行一个程序而没有告诉它程序所在的完整路径时,系统除了在当前目录下面寻找此程序外,还应到path中指定的路径去找。用户通过设置环境变量,来更好的运行进程。
  (来源:百度百科)

其中有一句话很关键,“当要求系统运行一个程序而没有告诉它程序所在的完整路径时,系统除了在当前目录下面寻找此程序外,还应到path中指定的路径去找。

我们先撇开这些不谈,我们没有配置环境变量的时候想要运行javac命令应该怎么办呢?
打开cmd直接输入javac?显然不可以:
这里写图片描述

显示的是“javac不是内部或外部命令,也不是可运行的程序或批处理文件。”,这跟你瞎打一行乱七八糟的东西是一样的,对windows来说是一样的,它都看不懂。我们要向执行javac,必须找到这个可执行文件的位置,然后系统就会在那里找到javac程序,才能够执行。
也就是先cd c:\Program Files\Java\jdk1.8.0_60\bin,进入javac所在的目录,再javac命令,这样才可以运行:
这里写图片描述

所以,以后每次编译java程序的时候,都要进入这个目录或者打上这个目录的地址,系统才会到这个地方找到javac程序,才会运行。
这多麻烦啊!
再想想为什么有的命令可以,有的命令不可以呢?是因为cmd会在当前目录下找有没有符合的命令(可执行文件),如果找不到的话?这个就回到开头对环境变量的解释了,“当要求系统运行一个程序而没有告诉它程序所在的完整路径时,系统除了在当前目录下面寻找此程序外,还应到path中指定的路径去找”,所以如果当前目录下找不到,系统就会在环境变量path中列举的目录依次去找。如果在这些目录中找到了就会执行,找不到才是会显示找不到。
所以我们把javac所在的目录也列入环境变量path中,这样的话,在计算机的任意位置执行javac是都可以的了。

还有没有什么问题?

这样把环境变量配置了,可以一劳永逸的使用那些命令了。但是还是会产生一些问题:我们如果想把jdk换一个地方储存,或者是把jdk改个名字,再或者版本升级新版的把旧的替换掉,所有这些会导致javac所在目录路径发生变化的事情,都会导致原有的环境变量配置都需要做出新的调整。这个时候有没有发现path很长,windows默认的窗口根本盛不下,每次添加修改的时候都得小心翼翼?而且我们发现,比如上面添加的;C:\Program Files\Java\jdk1.8.0_60\bin;,这些内容再怎么变化,也是中间的目录C:\Program Files\Java\jdk1.8.0_60发生变化,其他的是不会变化的。
所以就有了这个办法:我们规定一个东西,比如“AAA”吧,它就等于“C:\Program Files\Java\jdk1.8.0_60”,那么,原来的环境变量不就变成了;AAA\bin;了吗,这样我们每次修改的时候,只大胆的修改AAA就可以了,path里面添加的那些东西,就不用再如履薄冰地动它了。
但是,上面的只是我们的设想,在windows下,自有一套这样的做法,我们新建一个环境变量,也就是上面的AAA,我们通常起名为“JAVA_HOME”,然后把它的值设为C:\Program Files\Java\jdk1.8.0_60,然后在path里面添加“;%JAVA_HOME%\bin;”,这两个百分号括起来的东西,就是动态获取环境变量的值,会让系统自己去找它所指代的东西。这样,每次有变化的话就只修改JAVA_HOME里的值就可以了。
甚至可以想的再极限一点,在path里的那一大长串,我们的java环境变量放在前面,后面,还是中间呢?当然是前面更好一些,因为系统是从前往后找的,所以放在前面,会更快。(至于快多少,哈哈哈哈_

花里胡哨:怎么配置个临时环境变量?

有些情况下,如果我们希望配置一些环境变量,但是我们只是希望它能暂时的起作用,等会这个环境变量消失或者恢复原样就可以了。也就是我们希望配置一个临时的环境变量,这个时候怎么办呢?
这个时候我们需要用到一个命令“set”,我们在命令提示符窗口下输入set,会显示出所有的环境变量:
这里写图片描述

而我们在set后面加上具体的环境变量,就会显示某个环境变量的具体数值,例如:set path
这里写图片描述

如果再在后面加上=XXX,例如:set path=test,这样就会把该环境变量改变为某个值,再用set path查看一下:
这里写图片描述

我们可以看到,path的值已经发生了变化,但是这个时候我们再打开一个新的命令提示符窗口,输入set path查看path环境变量的值,发现还是原来的值:
这里写图片描述

所以利用这个思路,我们可以临时配置一个环境变量。
就是在命令提示符窗口中,输入set path=C:\Program Files\Java\jdk1.8.0_60\bin,就可以了,这样再使用javac是可以的。
但是这样还是有一个问题:path的值现在只有这一个了,其他的一些命令可能又没法使用了,所以我们还得改进方法,做到在path原来的基础上,添加新的值,而且不破坏旧的。
还记得之前说的两个百分号括起来的东西吗,动态获取环境变量值,我们可以利用它来做点事情,比如上面我们已经将环境变量设为javac的目录了,我们想再加上一个值,比如加上“have_a_try”,我们输入“set path=have_a_try;%path%”就可以了。
这里写图片描述

我们可以看到,path的值已经按照我们的意愿发生变化了,而且这个path是个临时的值,关掉以后就会影响恢复了。

[END]


也没有什么很难的地方,就是有一些以前从来没想过的东西,现在知道了为什么,怎么做。哈哈哈哈^_^

如有纰漏,望不吝指出,不胜感激。

  • 23
    点赞
  • 41
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值