什么是环境变量?为什么java要配置环境变量?
一 . 什么是环境变量?
1.1 用户变量与系统变量
我们首先先找到修改系统变量的地方:
右键我的电脑,单击“属性”;在出现的系统框中点击“高级系统设置”,你会进入一个系统属性框,选择里面的环境变量,你就会看到下面的框:
从上图我们可以看到环境变量包括用户变量和系统变量:
- 用户变量是指我们当前登入这台电脑的用户,比如管理员用户,普通用户。在里面配置的环境变量,只对这个用户有效,一旦用户进行了更换,这环境变量将改为新登录用户的环境变量。
- 系统变量是指这这台电脑的配置的环境变量,对所有用户都生效,不管你换哪个用户,都是生效的
1.2 Path路径
我们先明确两个概念:
- path路径:用来指定可执行文件的搜索路径,也就是后缀名为.exe文件
- .exe文件:你桌面上快捷方式的根本,点开快捷方式相当于点开改文件;
通过一个QQ例子来讲解:
首先安装好QQ,我们不用快捷方式打开它,而是通过cmd进入dos界面,直接输入QQ,出现下面的图片
原因是,你想让系统运行一个程序,你首先得告诉它这个程序在哪,不然系统:“WTF”;
所以我们需要将QQ的可执行文件位置告诉系统,QQ可执行文件位置如下
所以我们在dos界面中找到QQ的可执行文件的路径,输入QQ,QQ就打开了:
但是,你关掉Dos后重新进入,输入QQ发现,又是上面的问题,这就意味着你要从Dos打开QQ的话,必须每次进入QQ.exe文件所在路径,每次都得给系统QQ.exe文件的绝对路径,这样很麻烦
于是英雄登场,一个一劳永逸的方法就是将QQ.exe的文件路径放在Path环境变量里面,以后要打开QQ就不用每次进入该路径了,下图是配上QQ.exe路径时的path变量
接着我们dos中不给路径直接输入QQ,就可以直接打开QQ了:
1.3 总结
path变量的作用是可以让我们在没有这个应用的路径下面打开我们需要打开的应用,前提是这个应用得在环境变量里面配置了路径
二. 为什么java要配置环境变量
2.1 为什么要配置jdk的环境变量
我们为什么要配置java(jdk)的环境变量呢
1. 因为我们没有配置 jdk的环境变量,所以在没有在jdk/bin目录下是运行不了 java.exe和javac.exe(具体关于jdk和javac的知识请点这里)
那好办,我们可以去jdk/bin目录下运行java程序啊,但我们在bin目录下通过启动java.exe,然后再通过javac.exe要把一个java文件编译成class文件,这个class文件就生成在jdk/bin目录里了,这样不好,所以我们需要把jdk配置到path里面,这样在任何目录下都能运行java.exe和javac.exe来编译Java文件了,这样就不会让jdk/bin目录里有许多我们的Java文件和class文件。
2.2 如何配置
和上面一样,把jdk/bin目录加到path环境中去
配置完成后我们测试下:
在D盘的根目录新建一个HelloWorld程序,然后在dos里面运行
2.3 配置JAVA_HOME变量
如果我们需要配置多个 jdk 的环境变量,我们也需要把每个目录都添加到 path 中吗?这样 path 是不是就看起来很乱了呢?这时候,我们就需要一个 JAVA_HOME 变量了
在上面的编辑环境变量里面,我们有发现有些使用 %SystemRoot%system32 的变量值,但是我们在 cmd 中查看 path 环境变量的时候却没有发现有 %SystemRoot%system32 的字样,而是有个和他很像的 C:WINDOWSsystem32, 那是因为我们系统存在一个 SystemRoot 为变量名的变量,变量值是C:WINDOWS,而这个是隐藏的,我们无法看到,我们可以把这个变量名理解成我们 java 中的 int a = 1; int b = a; 后边的b是等于 a,而我们看到的效果是 a = 1,所以 b = 1;而不是 b = a 变量名.
配置步骤如下:
- 我们在系统变量这里点击新建:
- 点击新建后弹出一个新建系统变量的窗体,然后把变量名填写为 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。
快速看以下内容
首先得明白什么是环境变量,环境变量有什么用,
环境变量时操作系统中一个具有特定名字的对象,它包含了一个或者多个应用程序所将使用到的信息,java配置环境变量是为了告诉操作系统java运行或编译时用到那些命令程序,或那些java相关的文件或类,
-
PATH环境变量。作用是指定命令搜索路径,在shell下面执行命令时,它会到PATH变量所指定的路径中查找看是否能找到相应的命令程序。我们需要把 jdk安装目录下的bin目录增加到现有的PATH变量中,bin目录中包含经常要用到的可执行文件如javac/java/javadoc等待,设置好 PATH变量后,就可以在任何目录下执行javac/java等工具了。
-
CLASSPATH环境变量。作用是指定类搜索路径,要使用已经编写好的类,前提当然是能够找到它们了,JVM就是通过CLASSPTH来寻找类的。我们 需要把jdk安装目录下的lib子目录中的dt.jar和tools.jar设置到CLASSPATH中,当然,当前目录“.”也必须加入到该变量中。
-
JAVA_HOME环境变量。它指向jdk的安装目录,是供Eclipse/Tomcat等软件就是通过搜索JAVA_HOME变量来找到并使用安装好的jdk。