一、环境变量是什么东西?
环境变量到底在哪里?
属性——系统——高级系统设置——包含用户变量和系统变量 。
1.1.1 用户变量是指我们当前登入这台电脑的用户,比如管理员用户,普通用户。在里面配置的环境变量,只对这个用户有效,一旦用户进行了更换,这环境变量将改为新登录用户的环境变量。
1.1.2系统变量是指这这台电脑的配置的环境变量,对所有用户都生效,不管你换哪个用户,都是生效的。
java 环境变量应该是要配置在系统环境变量里面才能保证对每一个用户都生效。
path环境变量有啥用 ?
你们有没有发现,在 cmd 命令里面输入 notepad(系统自带的记事本应用)按回车,就能打开记事本,此时我们所在的目录是在D盘的根目录 (D盘里没有notepad.exe这个应用程序)。
然后,我的电脑E盘装了 cloudmusic.exe(网易云音乐播放器),同样也在 cmd 中输入 cloudmusic 看看能不能打开这个应用
它会提示我们 ‘cloudmusic’ 不是内部或外部命令,也不是可运行的程序或批处理文件。也无法打开这个应用。原因是因为当前目录下面没有这个 cloudmusic.exe 文件
那么我们把目录E盘下,就会发现 cloudmusic 指令能打开网易云音乐播放器这个应用
那么,为啥 notepad 能在没有这个应用的目录下执行这个命令,打开这个应用呢 ?
其中的奥秘就在于 path 环境变量中有 notepad.exe 应用的路径
那么,我们能不能让网易云音乐播放器也实现这个功能呢,可以任意目录打开它呢?
1,点击编辑之后会弹出一个编辑环境变量的窗口
2,我们选择新建,然后在里面把网易云音乐播放器的路径添加在这里,我电脑上网易云的目录在上面已经提到,把这个目录添加进去然后点击确定按钮就会关闭编辑环境变量窗口
3,确定——保存配置的环境变量,重新打开一个 cmd 命令窗口
二、怎么配置 java 环境变量?
为什么要配置 java 的环境变量?
因为我们没有配置 java 的环境变量,所以在没有 java 程序的目录运行不了 javac(编译器)
我们把很多的 java 文件和 class 文件放在jdk 的安装目录下,这样很混乱。
如果把 jdk 的目录配置在 path 里面,这样就能在任何目录下运行 java 程序了,而不会让 jdk 的安装目录里存很多 java 文件和 class 文件
怎么个配法 ?
把 jdk 安装目录下的 bin 目录的路径配置到 path 环境变量里面,运行HelloWord 程序
这样我们的环境变量就已经初步的配置好了。但是还有地方需要修改。
如果我们需要配置多个 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。
JAVA_HOME 环境变量的配置步骤如下:
我们在系统变量这里点击新建
点击新建后弹出一个新建系统变量的窗体,然后把变量名填写为 JAVA_HOME ,把变量值填写成你 jdk 的安装目录(注意,不用 bin 目录),然后点击确定
然后再编辑path环境变量,把刚才的配置的 jdk 的变量改成 %JAVA_HOME%\bin
保存配置,打开一个 cmd 窗口,输入 path,可以看到,我们配置的环境变量的 %JAVA_HOME% 已经替换成刚才 JAVA_HOEM 变量的变量值了,而且 java 程序也能够运行
为啥要配置 JAVA_HOME,一定要用 JAVA_HOME 命名吗?
因为有些开发工具,如(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%\lib\tools.jar;%JAVA_HOME%\lib\dt.jar;
这里的第一个为英文状态的点,代表的是当前目录。
配置 CLASSPATH 变量吗?一定要用 CLASSPATH 命名吗?
- jdk1.5 之后就不用再配置 CLASSPATH了,但是我们为了保证向下兼容 ,所以建议还是配置上为好。
- 在上面 JAVA_HOME 的图中,tomcat 也是会自动读取系统变量里面的 CLASSPATH。