Java环境变量配置

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变量中已经配置过,所以在任意目录都可执行该程序:


Java环境变量配置_第1张图片
任意目录都可运行notepad.png

三、配置环境变量

一、只设置Path环境变量

我的电脑--->属性--->高级系统设置--->高级--->环境变量--->Path

注意:因为Path环境变量中每个路径都是使用分号隔开的,所以在添加进jdk的bin路径时要注意前后有没有分号。

javac程序在bin目录中,把jdk的bin目录的路径加入到Path变量中:C:\Program Files\Java\jdk1.8.0_25\bin

Java环境变量配置_第2张图片
配置Path环境变量.png

此时,再次编译运行,通过。


Java环境变量配置_第3张图片
编译运行.png

二、使用JAVA_HOME环境变量

目前path环境变量除了保存了我们自己配置的信息以外,还有系统自带的信息,如果一旦不不小心删除了path环境变量信息,那么就可能导致系统部分功能无法使用。

所以为了尽量避免频繁的修改Path环境变量信息,可以使用一个新的变量。

方法:
新建一个环境变量保存jdk安装目录会发生变化的部分,然后在path环境变量上引用新环境变量所保存的信息。
新建一个环境变量:JAVA_HOME
变量值:存放jdk安装路径D:\java\jdk
在Path中引用该变量:%JAVA_HOME%bin

步骤图示:
①新建JAVA_HOME变量


Java环境变量配置_第4张图片
新建javahome环境变量.png

②在Path中引用


Java环境变量配置_第5张图片
在Path中引用javahome.png

三、配置临时环境变量

在现实开发中有时候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环境变量信息的带分号与不带分号的区别:

  1. 如果配置classpath环境变量信息没有加上分号,那么java虚拟机仅会在classpath所保存的路径下去搜索对应的class文件,不会在当前路径下去搜索了。

  2. 如果配置classpath环境变量信息加上分号,那么java虚拟机除了会在classpath所保存的路径下去搜索对应的class文件之外,如果能找到对应的class文件那么就马上指定对应的class文件,否则还会去当前路径下去搜索。哪个配置在前面就先去哪个地方搜索

注意:不推荐配置永久性的classpath环境变量

classpath会因为是否加分号而优先在某个路径下找,如果配置错了,就可能引发一些莫名其妙的问题;可能本身该目录就有对应的class文件,但是配置classpath变量的时候,忘记写分号或者分号写在了后面,就会导致jvm不优先在当前路径寻找或者直接不在当前路径下寻找对应的class文件。

你可能感兴趣的:(Java环境变量配置)