黑马程序员技术交流社区
标题: 【技术】关于环境变量~ [打印本页]
作者: mumu1030 时间: 2018-11-14 11:31
标题: 【技术】关于环境变量~
本帖最后由 mumu1030 于 2018-11-14 11:44 编辑
对于一个初学者来说,最重要的莫过于环境变量了。很多的老师讲课时第一步总是会教你怎么用记事本来写java,然后怎么编译,然后怎么运行。这些都依赖于环境变量。
那么我们来看看环境变量是什么东西。
首先按下键盘上的Windows键+R键接着输入cmd打开你的命令提示符,如果是win 7,直接在开始菜单输入cmd,也可以打开
file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image002.gif
这就是命令提示符了
file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image004.gif
先切换到我的工作目录F:/test(文件夹切换使用cd命令)
然后输入test,会提示’test’不是内部或外部命令,也不是可运行程序或批处理文件
file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image006.gif
这是因为命令行自带一部分内部命令,并且提供外部命令执行某些操作,同时命令行也会在当前目录搜索可运行的程序或者批处理文件来执行,而我执行的test都不满足以前情况,所以报错,但如果我执行ping
http://www.baidu.com,则可以正确运行,因为ping是一个外部命令。
file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image008.gif
那么这些命令为什么能运行呢?
我把环境变量下的%SystemRoot%\system32;这一段删除,重新打开命令行(必须新启一个,改变的环境变量不会影响已经打开的命令行窗口)
再次执行ping
http://www.baidu.com 也出现了‘ping’ 不是内部或外部命令,也不是可运行程序或批处理文件
file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image010.gif
file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image012.gif
说明ping 命令是执行的c:\Windows\System32\文件夹下的ping.exe这个程序,所以我们可以确定环境变量是用来告诉命令行,我的每一个命令是在哪里来找。
比如我在我的工作目录下创建一个test.bat里面只有一行代码 echo %1
然后再执行刚刚的test命令
file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image014.gif
现在就正常了,因为test现在是一个批处理文件了
所以当我们敲java -version提示‘java’ 不是内部或外部命令,也不是可运行程序或批处理文件
时,我们就知道了,是path里面没有配置java.exe的路径。于是我们可以直接把java.exe的路径配置到path里面,再次执行java -version ,就正常了
file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image016.gif
那么为什么要配置CLASS_HOME和JAVA_HOME呢?
其实CLASS_HOME和JAVA_HOME就相当于两个变量,当你需要某个值时,通过JAVA_HOME就可以直接找到,你当然可以叫其他名字,但不建议,因为某些软件可能通过这两个名字来取得这两个变量的值。
那么JAVA_HOME是干什么的?
JAVA_HOME就是定义了java的安装路径,比如我的路径为C:\Program Files\Java\jdk1.8.0_51,那么我的JAVA_HOME的值就为C:\ProgramFiles\Java\jdk1.8.0_51
file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image018.gif
file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image020.gif
然后在Path里面配置java.exe的路径时,直接配置%JAVA_HOME%\bin。%JAVA_HOME%就是取jdk安装路径,然后得到完整的路径就是C:\Program Files\Java\jdk1.8.0_51\bin
通常我们需要配置两个路径%JAVA_HOME%\bin和%JAVA_HOME%\jre\bin,因为这俩个目录下有java给我们提供的工具。
使用JAVA_HOME有什么好处呢?
很多情况下你需要不同版本的java,比如工作需要jdk 6或者jdk7,但你喜欢挑战新事务,想了解jdk 8的新功能,那么你可以将原来的JAVA_HOME重命名为JAVA_HOME1,然后再建一个JAVA_HOME,设置为另一个版本的jdk路径,然后需要切换时,把使用的JAVA_HOME换成其他不影响使用的名字,把你需要的版本设置为JAVA_HOME,这样可以轻松切换jdk版本,当然,你也可以写一个程序,自己设置JAVA_HOME的路径,这样更轻松的切换jdk版本
那么CLASS_PATH又是干嘛的呢?
CLASS_PATH,顾名思意,就是class 的路径,class是我们编译后的文件,所以CLASS_PATH就是告诉java当我们需要找哪个类时,需要到哪里去找这个类。默认配置
.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar
这两个类是java给我们提供的基础类库,如果你想使用其他类库,都可以配置在CLASS_PATH里,那么在程序运行时,就不需要再手动配置了
注意:1、eclipse等IDE写程序时,默认不是通过CLASS_PATH来获取类库的,所以依然需要你自己配置,但服务器上多个程序运行都依然的库,可以配置在CLASS_PATH中,避免每次加包或者减包没有把所有应用都同步操作而出错。
2、CLASS_PATH必须配置.; 点和分号,告诉java当前目录也要搜索
现在再让你配置环境变量,你是不是感觉得心应手了呢?
当然,每个人接受能力不同,处理问题也可能不细心,那么可能出现下面这种情况
输入java -version 正常就以为环境变量配置成功了但输入javac时,就提示‘javac
’不是内部或外部命令,也不是可运行程序或批处理文件,
这又是为什么呢?通过查看,我发现%JAVA_HOME%\jre\bin目录下有java.exe,但是没有javac.exe,所以导致java命令有用,而javac命令无效,所以只需要配置%JAVA_HOME%\bin就可以解决问题!
当然也存在另外一种可能,就是%JAVA_HOME%\bin下没有javac.exe,这种情况可能是因为你的jdk安装出问题了,或者其他情况,重新安装应该是可以解决问题,当然jdk的下载最好是通过官网,最好不要在第3方网站下载。
好了,本次的分享就到这里了,再见!
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |