做了九个多月的程序员,记得当初才接触java时,很困惑为什么要去配置环境变量,但当时自己并没有去解决,只是百度跟着做,也没有去理解原因;现在打算从头梳理一遍基础,从头开始给自己查缺补漏,然后用最简洁精炼的话语写下自己的一些想法或者笔记,加强自己的学习。
言归正传,我们刚开始学习java的时候,都知道要去下载java程序员的开发工具包,也就是jdk,其中包含了java的运行环境和一些java工具。第一个java程序就是HelloWorld,我们写好了HelloWorld.java文件后,在DOS命令窗口,通过javac去编译HelloWorld.java的源文件,使其生成HelloWorld.class的字节码文件,再通过java去运行HelloWorld.class。这个过程中,我们使用了javac和java两个命令,期间如果我们没有配置java环境变量,那么我们执行javac或者java命令时便会出现:’javac‘不是内部或外部命令,也不是可运行的程序,
我们都知道windows有自带的命令就是:ipconfig
那为什么ipconfig可以在任何目录下运行,而javac或者java不行呢?这时我们打开"环境变量" (以Windows10举例)
此电脑右键,选择“属性”
选择“高级系统设置”
然后选择“环境变量”
打开后,我们可以看见在变量“path”的路径后面跟着一个值“C:\Windows\System32;”
我们去电脑里找到该目录,在该目录下,我们便可以找到ipconfig指令
那我们是不是可以理解,我们在环境变量中设置了“path”的值为“C:\Windows\System32”,所以我们在DOS命令窗口敲下指令ipconfig时,Windows操作系统才能正确的识别该指令呢?当我们把“path”里的该值给删除或者修改为一个无效值后 (这里我把它修改为无效文件夹system321)
此时我们重新去DOS命令窗口敲下ipconfig指令
同样的问题也出现在了ipconfig的指令上。那么显而易见,答案呼之欲出,正是因为我们在环境变量里面告诉了Windows操作系统该指令应该去哪个目录下去寻找,所以才能在DOS命令窗口中执行该指令。
那么我们是不是把javac和java指令所在的目录告诉Windows操作系统,那么这两个指令就可以在DOS命令窗口里面执行了;这时打开我们之前下载好的jdk,在jdk的bin目录下可以找到javac和java两个指令(图片以jdk17为例)
你可以尝试,在该目录下去javac编译你的java文件,java去运行你的class文件是不需要配置环境变量也可以成功的。
同样的我们把该路径加入“path”值里面,去告诉Windows操作系统去该路径下寻找指令(如下图)
那我们便可以在DOS命令窗口中编译运行java程序了,以上就是配置java环境变量的原因及简略的操作。
顺便我们平时在看配置环境变量的时候会经常看到JAVA_HOME,和classpath这里个环境变量一起要求配置,
首先JAVA_HOME就行一个昵称一样,如图
当你把你jdk的路径给他命名为JAVA_HOME时,在填写“path”时就可以这样填写
classpath是去告诉java指令,去寻找HelloWorld.class文件时,从哪里开始找。你不配置的时候,默认是从当前目录下去找寻,也可以 赋值 “.;” , “.”是告诉ClassLoader从当前目录下寻找,“;”是一个隔离符。
第一次写博客,写的不好的话请见谅,也可以提出意见,毕竟目标是为了相互学习,相互进步