说到环境变量,大家可能都很熟悉,但是对于开始学 java 的人,甚至到学了一段 java 时间的人,都可能不是很懂,为啥要配置环境变量,怎么配置环境变量。下面,我将为大家讲到为啥要配环境变量,已经该怎么配,环境变量到底是个什么东西?
一、环境变量是什么东西?
-
环境变量到底在哪里?
1.1 右键单击我的电脑
1.2 选择属性之后会打开一个名叫系统新的窗口,之后我们选择新窗口中的高级系统设置
1.3 单击高级系统设置之后,会弹出一个系统属性窗口,首先,我们需要选择顶部的高级栏目,然后选择该栏目里面的环境变量
1.4 选择环境变量之后弹出一个环境变量的新窗口 ,环境变量窗口里面包含用户变量和系统变量 。
1.4.1 用户变量是指我们当前登入这台电脑的用户,比如管理员用户,普通用户。在里面配置的环境变量,只对这个用户有效,一旦用户进行了更换,这环境变量将改为新登录用户的环境变量。
1.4.2系统变量是指这这台电脑的配置的环境变量,对所有用户都生效,不管你换哪个用户,都是生效的。
1.5 在环境变量中,会发现有两个 path 变量,一个是在用户变量里面,一个是在系统变量里面,更具上面的解释,我们的 java 环境变量应该是要配置在系统环境变量里面才能保证对每一个用户都生效。
-
path环境变量有啥用 ?
-
你们有没有发现,在 cmd 命令里面输入 notepad(系统自带的记事本应用)按回车,就能打开记事本,此时我们所在的目录是在D盘的根目录 。
-
windows 图标键和 R 键一起按弹出一个运行窗口,在里面输入 cmd,然后点击打开就会弹出一个 cmd 窗口。
-
我们进入D盘根目录,发现并没有发现 notepad.exe 的应用程序,却能打开这个应用
-
然后,我的电脑装了 cloudmusic.exe(网易云音乐播放器),同样也在 cmd 中输入 cloudmusic 看看能不能打开这个应用
-
它会提示我们 ‘cloudmusic’ 不是内部或外部命令,也不是可运行的程序或批处理文件。也无法打开这个应用。原因是因为当前目录下面没有这个 cloudmusic.exe 文件
-
那么我们把目录切换到网易云音乐播放器的所在的目录下,就会发现 cloudmusic 指令能打开网易云音乐播放器这个应用
-
那么,为啥 notepad 能在没有这个应用的目录下执行这个命令,打开这个应用呢 ?
-
其中的奥秘就在于 path 环境变量中有 notepad.exe 应用的路径
-
那么,我们能不能让我们的网易云音乐播放器也实现这个功能呢,可以在没有 cloudmusic.exe 应用的目录打开网易云音乐播放器呢?
-
这个毋庸置疑,肯定是能实现的,那么我们来到系统的 path 环境变量中,首先选择 path,然后点击编辑
-
点击编辑之后会弹出一个编辑环境变量的窗口
-
我们选择新建,然后在里面把网易云音乐播放器的路径添加在这里,我电脑上网易云的目录在上面已经提到,把这个目录添加进去然后点击确定按钮就会关闭编辑环境变量窗口
-
此时我们需要点击环境变量窗口中的确定按钮保存我们配置的环境变量。同时重新打开一个 cmd 命令窗口,因为你打开的 cmd 窗口的环境变量是使用的你打开的时候的环境变量,我们现在更新了环境变量,所以要重新打开一个 cmd 命令窗口
-
由此,我们得出结论,path 环境变量的作用是可以让我们在没有这个应用的路径下面打开我们需要打开的应用,前提是这个应用得在环境变量里面配置了路径
-
二、怎么配置 java 环境变量?
-
为什么要配置 java 的环境变量?
- 因为我们没有配置 java 的环境变量,所以在没有 java 程序的目录运行不了 javac(编译器)
- 这时我们可以在我们 jdk 的安装目录下运行这个程序,但是我们要把一个 java 文件编译成 class 文件,他会生成在和 java 同一个目录下,也就是在 jdk 的安装目录下,这样一旦要编译的 java 文件多了起来,我们的这个目录下将会有很多的 java 文件和 class 文件,这样明显是不符合常理的。
- 所以我们需要把 jdk 的目录配置在 path 里面,这样就能在任何目录下运行 java 程序了,而不会让 jdk 的安装目录里面多了很多我们的 java 文件和 class 文件
-
怎么个配法 ?
-
把 jdk 安装目录下的 bin 目录的路径配置到 path 环境变量里面
-
此时我们已经配置好了 path 环境变量,保存下配置。那么来测试一下,在D盘的根目录新建一个 HelloWord 程序,看看能不能编译和运行
HelloWord.java
public class HelloWord{ public static void main(String[] args){ System.out.println("Hello word"); } }
-
这样我们的环境变量就已经初步的配置好了。但是还有地方需要修改。
-
如果我们需要配置多个 jdk 的环境变量,我们也需要把每个目录都添加到 path 中吗?这样 path 是不是就看起来很乱了呢?这时候,我们就需要一个 JAVA_HOME 变量了
-
-
配置 JAVA_HOME 变量
在上面的编辑环境变量里面,我们有发现有些使用 %SystemRoot%\system32 的变量值,但是我们在 cmd 中查看 path 环境变量的时候却没有发现有 %SystemRoot%\system32 的字样,而是有个和他很像的 C:\WINDOWS\system32, 那是因为我们系统存在一个 SystemRoot 为变量名的变量,变量值是C:\WINDOWS,而这个是隐藏的,我们无法看到,我们可以把这个变量名理解成我们 java 中的 int a = 1; int b = a; 后边的b是等于 a,而我们看到的效果是 a = 1,所以 b = 1;而不是 b = a 变量名
JAVA_HOME 环境变量的配置步骤如下:
-
我们在系统变量这里点击新建
-
点击新建后弹出一个新建系统变量的窗体,然后把变量名填写为 JAVA_HOME ,把变量值填写成你 jdk 的安装目录(注意,不用 bin 目录),然后点击确定
-
然后再编辑path环境变量,把刚才的配置的 jdk 的变量改成 %JAVA_HOME%\bin
-
保存配置,打开一个 cmd 窗口,输入 path,可以看到,我们配置的环境变量的 %JAVA_HOME% 已经替换成刚才 JAVA_HOEM 变量的变量值了,而且 java 程序也能够运行
为啥要配置 JAVA_HOME,一定要用 JAVA_HOME 命名吗?
-
我们电脑如果装了多个版本的 jdk,我们只需要在 JAVA_HOME 中把 jdk 的目录添加进去,而不用在 path 里面加 bin 目录的路径
-
因为有些开发工具,如(eclipse,IDEA, tomcat)都会去扫描你的JAVA_HOME变量,看看你的电脑装了几个版本的 jdk。
-
可以不用 JAVA_HOME 这个名字当参数名,那么有些软件启动需要 JAVA_HOME ,例如 tomcat,当你不用这个命名,你就需要去修改 tomcat 的 bin 目录下的 catalina.bat 文件,才能启动 tomcat,何必呢?
-
-
-
配置 CLASSPATH 变量
我们配置 path 环境变量,只是告诉我们的电脑,我们装了 java ,这个应用放在哪里,而 CLASSPATH 就相当于 java 虚拟机的 path,它是用来告诉我们需要运行的 .class 文件时放在哪里
如何配置 CLASSPATH 变量?
和 JAVA_HOME 配置类似,点击新建变量,
变量名为 CLASSPATH,
变量值一般为 .;%JAVA_HOME%\lib\tools.jar;%JAVA_HOME%\lib\dt.jar;
这里的第一个为英文状态的点,代表的是当前目录。
一定要配置 CLASSPATH 变量吗?一定要用 CLASSPATH 命名吗?
1. jdk1.5 之后就不用再配置 CLASSPATH了,但是我们为了保证向下兼容 ,所以建议还是配置上为好。 2. 在上面 JAVA_HOME 的图中,tomcat 也是会自动读取系统变量里面的 CLASSPATH。