说到环境变量,大家可能都很熟悉,但是对于开始学 java 的人,甚至到学了一段 java 时间的人,都可能不是很懂,为啥要配置环境变量,怎么配置环境变量。下面,我将为大家讲到为啥要配环境变量,已经该怎么配,环境变量到底是个什么东西?
一 . 什么是环境变量?
1.1 用户变量与系统变量
右键我的电脑,单击“属性”;在出现的系统框中点击“高级系统设置”,你会进入一个系统属性框,选择里面的环境变量,你就会看到下面的框:
从上图我们可以看到环境变量包括用户变量和系统变量:
- 用户变量是指我们当前登入这台电脑的用户,比如管理员用户,普通用户。在里面配置的环境变量,只对这个用户有效,一旦用户进行了更换,这环境变量将改为新登录用户的环境变量。
- 系统变量是指这这台电脑的配置的环境变量,对所有用户都生效,不管你换哪个用户,都是生效的。
我们的 java 环境变量应该是要配置在系统环境变量里面才能保证对每一个用户都生效。
1.2 Path环境变量有啥用 ?
-
你们有没有发现,在 cmd 命令里面输入 notepad(系统自带的记事本应用)按回车,就能打开记事本,此时我们所在的目录是在D盘的根目录 。
-
windows 图标键和 R 键一起按弹出一个运行窗口,在里面输入 cmd,然后点击打开就会弹出一个 cmd 窗口。
3. 我们进入D盘根目录,发现并没有发现 notepad.exe 的应用程序,却能打开这个应用
4. 然后,我的电脑装了 QQ.exe,同样也在 cmd 中输入 QQ.exe看看能不能打开这个应用
原因是,你想让系统运行一个程序,你首先得告诉它这个程序在哪。
所以我们需要将QQ的可执行文件位置告诉系统,QQ可执行文件位置如下
所以我们在dos界面中找到QQ的可执行文件的路径,输入QQ,QQ就打开了:
5.那么,为啥 notepad 能在没有这个应用的目录下执行这个命令,打开这个应用呢 ?
6.其中的奥秘就在于 path 环境变量中有 notepad.exe 应用的路径
7.那么,我们能不能让我们的QQ也实现这个功能呢,可以在没有 QQ.exe 应用的目录打开QQ呢?
于是英雄登场,一个一劳永逸的方法就是将QQ.exe的文件路径放在Path环境变量里面,以后要打开QQ就不用每次进入该路径了,
8.这个毋庸置疑,肯定是能实现的,那么我们来到系统的 path 环境变量中,首先选择 path,然后点击编辑
9. 点击编辑之后会弹出一个编辑环境变量的窗口,下图是配上QQ.exe路径时的path变量
10. 接着我们dos中不给路径直接输入QQ,就可以直接打开QQ了:
1.3 总结
path变量的作用是可以让我们在没有这个应用的路径下面打开我们需要打开的应用,前提是这个应用得在环境变量里面配置了路径。
二、为什么Java要配置环境变量?
2.1 为什么要配置jdk的环境变量
- 因为如果我们没有配置 java 的环境变量,那么没有在jdk/bin目录下的java类代码运行不了 javac.exe(编译器)和java.exe(运行)(具体关于jdk和javac的知识请点这里)。换句话说:就是如果没有配置Java环境变量,那么你所有的Java代码必须放在jdk/bin目录(同 javac.exe和java.exe同一个目录)下才能编译和运行。
- 这时我们可以在我们 jdk 的安装目录下运行这个程序,但是我们要把一个 java 文件编译成 class 文件,他会生成在和 java 同一个目录下,也就是在 jdk 的安装目录下,这样一旦要编译的 java 文件多了起来,我们的这个目录下将会有很多的 java 文件和 class 文件,这样明显是不符合常理的。
- 所以我们需要把 jdk 的目录配置在 path 里面,这样就能在任何目录下运行 java 程序了,而不会让 jdk 的安装目录里面多了很多我们的 java 文件和 class 文件
2.2 如何配置Path
-
把 jdk 安装目录下的 bin 目录的路径配置到 path 环境变量里面
- 此时我们已经配置好了 path 环境变量,保存下配置。那么来测试一下,在D盘的根目录新建一个 HelloWord 程序,看看能不能编译和运行
1 public class HelloWord{ 2 public static void main(String[] args){ 3 System.out.println("Hello word"); 4 } 5 }
-
这样我们的环境变量就已经初步的配置好了。但是还有地方需要修改。
-
如果我们需要配置多个 jdk 的环境变量,我们也需要把每个目录都添加到 path 中吗?这样 path 是不是就看起来很乱了呢?这时候,我们就需要一个 JAVA_HOME 变量了。
2.3 配置JAVA_HOME变量
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:
一定要配置 CLASSPATH 变量吗?一定要用 CLASSPATH 命名吗?
- jdk1.5 之后就不用再配置 CLASSPATH了,但是我们为了保证向下兼容 ,所以建议还是配置上为好。
- 在上面 JAVA_HOME 的图中,Tomcat 也是会自动读取系统变量里面的 CLASSPATH。
[转]https://blog.csdn.net/qq_36582604/article/details/88120308?spm=1001.2014.3001.5501