Java环境变量配置
要介绍如何配置环境变量,首先要知道为什么需要配置环境变量,所以这里先介绍一下java的基础知识。
一、java环境的搭建
1.jdk与jre
jre:java运行环境
jre = java虚拟机 + 核心类库(辅助java虚拟机运行的文件)
jdk: java开发工具集
jdk = jre + java开发工具。
注意:安装jdk的路径,不能带有中文路径或者是空格。
2.jdk目录介绍:
- bin: 存放的是java的开发工具。
- db : JDK7附带的一个轻量级的数据库,名字叫做Derby。
- include :存放的调用系统资源的接口文件。
- jre : java运行环境
- lib : 核心类库。
- src.zip : java源代码
其中bin目录下的两个重要执行文件javac.exe和java.exe:
javac.exe: 启动java编译器对指定的java源文件进行编译。
使用:
javac java源文件
java.exe: 启动java虚拟机解释并执行指定的class文件。
使用:
java 指定的class文件
下面,来编写一个demo来对其进行编译运行Hcx.java
class Hcx{
public static void main(String[] args) {
System.out.println("Hello HCX");
}
}
因为java编译器工具在jdk的bin目录下,两种方式:
- 方式一:把该文件复制到jdk的bin目录下并使用命令:javac Hcx.java
- 方式二:在jdk的bin目录下使用绝对路径找到要编译的文件:javac e:\study\Hcx.java
上面的两种方式的缺陷:
方式一中,本身的bin目录是存放java的开发工具的,不应该存在一些其他无关的文件。
方式二中,因为java编译器javac.exe是位于jdk的bin目录下的,在编译执行指定文件时,我们面临的问题是每次编译的时候都需要写上java源文件的完整路径。
解决:
如果电脑可以在任意路径下都能找到java的开发工具,那么问题就解决了。由此引来了环境变量的配置。
二、为什么需要配置环境变量
上面提到,正是因为每次在编译指定文件时,我们都需要写上java源文件的完整路径。下面先介绍一个在控制台写一个可执行文件的文件名的执行原理。
在控制台写一个可执行文件的文件名的执行原理:
在控制台写一个可执行文件的文件名,那么系统首先会在控制台当前路径下去搜索是否存在该文件,如果可以找到指定的文件,那么就执行该文件,如果找不到该文件,那么系统还会根据path的环境变量所保存的路径信息下去搜索是否有指定的文件,如果能找到,那么就执行该文件。
例如输入:mspaint,就可以直接启动该程序了。
所以,对于一些已经在Path环境变量中配置好的文件,都可以在任意路径下执行。
例如notepad记事本程序,在Path变量中已经配置过,所以在任意目录都可执行该程序:
三、配置环境变量
一、只设置Path环境变量
我的电脑--->属性--->高级系统设置--->高级--->环境变量--->Path
注意:因为Path环境变量中每个路径都是使用分号隔开的,所以在添加进jdk的bin路径时要注意前后有没有分号。
javac程序在bin目录中,把jdk的bin目录的路径加入到Path变量中:C:\Program Files\Java\jdk1.8.0_25\bin
此时,再次编译运行,通过。
二、使用JAVA_HOME环境变量
目前path环境变量除了保存了我们自己配置的信息以外,还有系统自带的信息,如果一旦不不小心删除了path环境变量信息,那么就可能导致系统部分功能无法使用。
所以为了尽量避免频繁的修改Path环境变量信息,可以使用一个新的变量。
方法:
新建一个环境变量保存jdk安装目录会发生变化的部分,然后在path环境变量上引用新环境变量所保存的信息。
新建一个环境变量:JAVA_HOME
变量值:存放jdk安装路径D:\java\jdk
在Path中引用该变量:%JAVA_HOME%bin
步骤图示:
①新建JAVA_HOME变量
②在Path中引用
三、配置临时环境变量
在现实开发中有时候jdk版本的信息有时候只会使用一次或者几次就不再使用了,那么如果是这种情况,一般都是通过set命令配置临时环境变量。
临时环境变量就是仅对于当前控制台窗口起作用,窗口一旦关闭,那么配置的临时环境变量信息会发生消失。
set命令的用法:
命令格式 | 作用 |
---|---|
set | 查看所有的环境变量信息。 |
set 环境变量的名字 | 查看指定的环境变量信息。 |
set 环境变量名字 = 路径信息 | 设置指定的环境变量信息。 |
set 环境变量名字 = | 清空指定的环境变量信息。 |
set 环境变量名字 = 新路径;%环境变量名字% | 在原有的基础上添加新的路径信息。 |
例:set path=f:\hcx\jdk;%path%
四、classpath环境变量
使用场景:如果class文件在F盘,想要在E盘执行该文件;即当前目录不存在class文件,class文件位于其他目录;此种需求则需要配置classpath环境变量。让jvm去到classpath设置的路径去寻找要执行的class文件。
作用:设置了classpath环境变量的时候,启动jvm(java虚拟机)的时候,那么java虚拟机就会根据classpath环境变量所保存路径信息下去寻找对应的class文件。
classpath的作用: 设置class文件的路径信息
作用是指定类搜索路径,要使用已经编写好的类,前提当然是能够找到它们了,一旦配置了classpath路径信息的时候,jvm与java编译器都会根据classpath指定的路径去寻找class文件。
设置classpath环境变量信息的带分号与不带分号的区别:
如果配置classpath环境变量信息没有加上分号,那么java虚拟机仅会在classpath所保存的路径下去搜索对应的class文件,不会在当前路径下去搜索了。
如果配置classpath环境变量信息加上分号,那么java虚拟机除了会在classpath所保存的路径下去搜索对应的class文件之外,如果能找到对应的class文件那么就马上指定对应的class文件,否则还会去当前路径下去搜索。哪个配置在前面就先去哪个地方搜索
注意:不推荐配置永久性的classpath环境变量
classpath会因为是否加分号而优先在某个路径下找,如果配置错了,就可能引发一些莫名其妙的问题;可能本身该目录就有对应的class文件,但是配置classpath变量的时候,忘记写分号或者分号写在了后面,就会导致jvm不优先在当前路径寻找或者直接不在当前路径下寻找对应的class文件。