您的位置:首页 > 编程语言 > Java开发

Java 学习笔记 —— 深入理解 JAVA_HOME 、Path 以及 CLASSPATH

2019-03-30 18:00 190 查看
版权声明:有标注,不迷路——| https://blog.csdn.net/iWonder21/article/details/88427622

 
目录

    ◆ 引言
    ◆ 永久环境变量
    ◆ 临时环境变量
    ◆ 尾语

◆ ◆ ◆ 引言

通常我们在安装 JDK 之后,都会配置环境变量。那么我们为什么要进行这样的配置呢?这篇文章或许能够帮你解答这个问题。

转至目录

◆ ◆ ◆ 永久环境变量

环境变量一般是指在操作系统中用来指定操作系统运行环境的一些参数,是一个在操作系统中具有特定名字的对象,它包含了一个或者多个应用程序所将使用到的信息。一般在 JDK 安装完成后,我们会进行 JAVA_HOME 、Path 以及 CLASSPATH 这三种环境变量的配置,不过在 JDK 1.5 之后 基本不用再设置 CLASSPATH ,但是 CLASSPATH 在命令行界面中设置临时环境变量里还有一些有趣的应用,在介绍它之前,我们不妨先来了解一下永久环境变量。

我已经在上一篇文章中针对如何进行 JAVA_HOME 以及 Path 的配置作了介绍,而那种方法设置的环境变量就是永久环境变量。这其中 Path 环境变量的作用是:当要求系统运行一个程序而没有告诉它程序所在的完整路径时,系统除了在当前目录下面寻找此程序外,还应到 Path 中指定的路径去找。根据这个原理,我们只需要将 JDK 的安装路径新增至 Path 变量即可,为什么还要多此一举地设置一个 JAVA_HOME 呢?这其实是有原因的:

  • 方便引用,比如,我 JDK 安装在 C:\Program Files\Java\jdk1.8.0_201 目录里,将 JAVA_HOME 的值设置
    为该目录路径, 那么以后使用这个路径的时候,只需输入 %JAVA_HOME% 即可,避免每次引用都输入很长的路径串
  • 归一原则, 当 JDK 安装路径被迫改变的时候, 我们仅需更改 JAVA_HOME 的变量值即可, 否则,就要更改任何使用绝对路径引用 JDK 安装目录的文档,万一有所遗漏, 某个程序找不到 JDK ,就可能导致系统崩溃
  • 规避风险,Path 变量里在我们设置 JDK 的安装路径之前就已经有了很多值,如果不小心更改或者删除了其中某项值,就会造成很恶劣的影响。有了 JAVA_HOME 作为过渡,就会大大降低产生这种情况的概率

转至目录

◆ ◆ ◆ 临时环境变量

临时环境变量是针对命令行界面而言的,它的生存周期与设置它的控制台窗口保持一致,随着窗口的关闭而不再生效,也不会对之前设置的永久环境变量造成影响。虽然它生命周期很短,却能给我们带来很多方便。关于临时环境变量的设置,要用到命令 set ,详细的使用方法,可以通过在控制台输入

help set
或者
set /?
进行查询,当然其他的命令也可以通过这种方式学习使用。

为了能够更透彻的理解,我们不妨做一些场景假设:

  • 如果我们需要临时在朋友的计算机上进行 Java 的开发,又刚好他并没有安装过 JDK ,难道我们要再做一次下载、安装以及环境变量配置的操作吗?先不说朋友的计算机会不会允许我们这样胡搞,单只是这一顿操作就已经很是耗费精力了。 当然,在没有其他办法的时候,这也不失为一种解决方法,不过,我们显然有更好的选择——设置临时环境变量。我们需要一个安装了 JDK 的 U 盘,插入计算机后,在控制台输入
    set path= F:\Java\JDK
    就可以愉快的进行开发了,下面是一些其他常用的命令:
set path //打印 Path 所有值到屏幕上
set path= //清空 Path 的所有值
set path=C:\Users//设置Path的值仅为C:\Users
set path=C:\Users;//设置Path的值仅为C:\Users,并隐式设置需要扫描当前目录
set path=.;C:\Users//设置Path的值仅为C:\Users,并显式设置需要扫描当前目录
set path=C:\Users;%path%//在Path原有的值得基础上,新增 C:\Users
  • 关于 CLASSPATH ,它的作用是向其指定的路径查找可执行的 .class 文件。只要将上述命令中的 path 换成 classpath 就可以实现对临时环境变量 classpath 的操作。在日常开发中,如果当前目录明明存在某一文件,然而在执行时却始终提醒我们
    错误: 找不到或无法加载主类
    ,那就很有可能是因为我们设置了永久的 CLASSPATH 。这时候只要输入
    set classpath=.;%classpath%
    ,再次执行时应该就可以了
  • 有一点需要补充说明的就是,我们一般不会使用
    set classpath=C:\Users;
    这种格式的命令,一种可能导致的错误是:指定目录下没有某份文件,但在执行的时候却意外得到了其他的输出。正常情况下,我们应该接收到
    错误: 找不到或无法加载主类
    这样的错误提示。使用此命令后,如果我们忘记了系统会扫描当前目录,就会增加我们 debug 的难度,因为这种格式的命令是隐式设置系统需要扫描当前目录,即使运用
    set classpath
    命令也很容易忽略掉分号,但是
    set classpath=.;%classpath%
    命令却可以通过
    set classpath
    命令得到明显的反馈,因为
    .;
    即代表扫描当前所在路径

转至目录

◆ ◆ ◆ 尾语

上述所云,诚为一家之言,如有疏漏谬误,欢迎批评指正!

转至目录

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: