安装jdk需要配置环境变量的原理

问题

1、学过java的同学应该都知道,第一堂课就是如何安装jdk和配置jdk的环境变量,主要配置的环境变量有三个,分别是JAVA_HOME、path、CLASSPATH,如下是我本机的jdk环境变量配置信息:

JAVA_HOME   F:\java\jdk
CLASS_PATH   .;F:\java\jdk\lib
path    F:\java\jdk\bin;...(path比较特殊,不止jdk,故其他的忽略)

2、配置完环境变量后,老师可能就会告诉你,打开cmd,然后敲入javac和java,是不是弹出来一大推提示信息,如果有,那说明你配置成功了

3、那么问题就来了,为什么要配置环境变量呢?配置环境变量到底做了什么事情?接下来我们开始分析!

大胆的假设

1、我们发现JAVA_HOME配置的是jdk的根目录,如下图,也就是说,我们现在告诉了操作系统,我装的jdk的根目录在这个路径,如果你需要什么资源,可以来这个路径下找
本机配置如下

2、path中配置的是F:\java\jdk\bin目录,查看如下,我们可以看到里面存在大量的exe文件,可以猜测,jdk在执行某些java程序的时候,实际上是调用了这里面的命令来执行的。
path配置路径

3、CLASSPATH里面配置的是F:\java\jdk\lib,查看如下,发现里面存在一些jar文件以及其他文件,可以猜测这些是一些工具,当我们需要调用某些jdk自己写好的功能的时候,就是调用了这里面的东西。
这里写图片描述

小心的论证

我们使用记事本来编写java程序,进行论证:

1、首先,编写了一个HelloWorld.java,其中内容如下:

public class HelloWorld{
    public static void main(String[] args){
        System.out.println("hello world");
    }
}

2、进入cmd命令,到达这个文件所在路径后,执行命令javac HelloWorld.java,发现执行命令成功,且生成了一个HelloWorld.class文件。
这里写图片描述
①为什么能执行javac命令?
我们先不问为什么会生成一个class文件出来,首先为什么能执行javac呢?那么我们首先要知道javac在哪,很明显,我们在F:\java\jdk\bin目录下找到了javac.exe文件,也就是说实际上是操作系统调用了这个文件,而我们只是在path上配置了bin目录,为什么操作系统就知道要从这个目录下去调用这个javac.exe文件呢?这就是操作系统的原理了,原来,当我们在操作系统的某个目录下执行某个命令xxx的时候,操作系统首先会在当前目录下查看有没有这个命令,如果没有,再去path环境变量中去找这个命令,找到了就调用,没找到就提示错误!
如何验证?既然我们猜测得出执行javac HelloWorld.java的时候,调用的是javac.exe命令来执行的,那么我如果将环境变量中的path去掉,然后用javac.exe的绝对路径来执行,也应该是成功得到class文件,操作结果如下:果然如此!既然javac是这个原理,那么像java、javaw等各种命令,自然也是这个原因了,不再解释
这里写图片描述
这里写图片描述

②为什么需要配置JAVA_HOME?
很多资料上都说,配置JAVA_HOME是最重要的,这是真的吗?为了验证,我首先在自己的电脑上将这个环境变量进行了删除,然后再去编译执行HelloWorld.java,发现执行却是成功的?这是为什么呢?找了很久,最终发现,原来,配置JAVA_HOME主要是为了其他软件的方便,因为有些软件运行需要有jdk的支持,所以说,如果你是大神,写java代码只需要记事本,其实你不配置JAVA_HOME也是可以正常运行代码的,不过为了兼容第三方,还是建议配置这个变量。
这里写图片描述

③为什么要配置CLASSPATH:
首先我们来改造一下HelloWorld.java,修改后如下:在其中我们导入了ArrayList,而这个是jdk为我们提供的一个类

import java.util.ArrayList;


public class HelloWorld
{
    public static void main(String[] args)
    {
        ArrayList<String> test = new ArrayList<>();
        test.add("hello");
        System.out.println("HelloWorld");
    }
}

此时我们使用javac和java来编译执行,发现结果如下,显然成功编译运行
这里写图片描述
那么我们接下来,我们将配置好的CLASSPATH进行删除,然后重新编译和执行,发现结果如下:发现还是编译成功了。这就有点奇怪了,接下来我想是不是因为配置了JAVA_HOME的原因呢?操作系统会不会先去找CLASSPATH,找不到然后就去找JAVA_HOME,没想到果然如此,再删掉JAVA_HOME和CLASSPATH后,然后再编译HelloWorld.java文件,发现还是能够正常运行。结论就是:CLASSPATH似乎并没有什么卵用。

结论

我们在安装完jdk后,如果只是要写java代码!完全可以不必要配置jdk的环境变量,因为我们只需要知道具体编译javac和java两个命令的具体地址,我们肯定是能够去编译和运行代码的,但是为了方便,还是配上环境变量吧,毕竟更方便!

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值