原理分析

当我们配置环境变量的时候到底在配置什么?
我们一般需要在环境变量中做如下配置:

1
2
3
4
5
-   export JAVA_HOME=/usr/local/java/jdk1.8.0_291:设置JAVA_HOME环境变量,指向Java JDK的安装路径。
- export JRE_HOME=${JAVA_HOME}/jre :设置JRE_HOME环境变量,指向Java运行时环境(JRE)的安装路径,JRE是Java程序运行的基础。
- export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib:$CLASSPATH :设置CLASSPATH环境变量,指向Java类库的路径,包含了Java程序运行时需要的库文件,"."表示当前目录。
- export JAVA_PATH=${JAVA_HOME}/bin:${JRE_HOME}/bin :设置JAVA_PATH环境变量,指向Java可执行文件的路径,包含了Java程序运行所需的工具和命令。
- export PATH=$PATH:${JAVA_PATH} :将JAVA_PATH添加到系统PATH环境变量中,以便系统能够找到Java相关的可执行文件。

首先需要弄懂环境变量的定义

即环境变量本质就是约定的配置默认执行路径的一种方式而已。

而什么是CLASSPATH呢?classpath是JVM用到的一个环境变量,它用来指示JVM如何搜索class
现在我们假设classpath.;C:\work\project1\bin;C:\shared,当JVM在加载abc.xyz.Hello这个类时,会依次查找^1

  • <当前目录>\abc\xyz\Hello.class

  • C:\work\project1\bin\abc\xyz\Hello.class

  • C:\shared\abc\xyz\Hello.class

所以,CLASSPATH配置的其实就是定义搜索对应的class目录。指向Java类库的路径,包含了Java程序运行时需要的库文件,”.”表示当前目录。

问题解决

问题描述:系统存在旧的java版本 配置环境变量后依然是旧的java版本怎么办?
环境变量中配置的 PATH 变量系统是按照先后顺序进行读取的,应将其置于最上方

一些辅助命令

使用env命令显示所有的环境变量:

1
$ env

使用set命令显示所有本地定义的Shell变量,使用unset命令来清除环境变量

1
2
3
4
5
set可以设置某个环境变量的值。清除环境变量的值用unset命令。
如果未指定值,则该变量值将被设为NULL。
示例如下: $ export TEST="Test..." #增加一个环境变量TEST
$ env|grep TEST #此命令有输入,证明环境变量TEST已经存在了 TEST=Test...
$ unset $TEST #删除环境变量TEST $ env|grep TEST #此命令没有输出,证明环境变量TEST已经存在了