以前只知道傻傻的跟着教程配置jdk环境变量,
今天看了点资料,仔细的学习了一下,明白了为什么这么配置,还学了一些花里胡哨的玩意,
总结一下。
1.右键单击“我的电脑”,单击“属性”,点开“高级系统设置”,点开它:
3.点上面的“高级”,然后点下面的“环境变量”,然后弹出来:
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]
如有纰漏,望不吝指出,不胜感激。