Java环境变量配置详解

前言

不知道有多少同学跟我一样,配置Java环境变量的时候总是直接照搬网上的模板,却对为什么要这么配置不求甚解,今天闲来无事,便想稍微弄清一下各个参数的作用以及要不要这样配置。

一、Java相关的三个常见环境变量

Java相关的三个常见环境变量分别是JAVA_HOME、CLASSPATH、PATH,下面我们对这三个环境变量的作用分别进行解释。

1.JAVA_HOME

JAVA_HOME指明了JAVA运行环境的安装路径。它和JAVA之间,除了字面相似度高外,没有什么联系。之所以配置该变量大约有三点原因:
(1)方便CLASSPATH和PATH这两个变量的配置;
(2)便于升级JAVA,升级时,只需要将该变量指向新版本的JAVA安装目录即可;
(3)某些应用依赖于该变量,比如常用的Web容器Tomcat,以及IDE开发软件Eclipse等。

如果确定没有应用依赖该变量,甚至可以不配置,但基于前两个优点,一般不建议这么做。

2.CLASSPATH

CLASSPATH设置的目的,在于告诉Java执行环境,在哪些目录下可以找到您所要执行的Java程序所需要的类或者包。配置CLASSPATH的四种方式如下:
(1)不采取任何方式,那么ClassPath的默认配值为‘.’,表示类路径为当前目录及其子目录;
(2)使用环境变量配置CLASSPATH,设置后会覆盖默认配置;
(3)使用命令行参数-classpath或-cp设置,设置后会覆盖环境变量配置和默认配置;
(4)如果运行含有manifest文件的可执行jar包,那么manifest文件设置的类路径会覆盖前三种配置。

3.PATH

PATH指定一个路径列表,用于搜索可执行文件的。执行一个可执行文件时,如果该文件不能在当前路径下找到,则依次寻找 PATH 中的每一个路径,直至找到。或者找完 PATH 中的路径也不能找到,则报错。Java 的编译命令 (javac),执行命令 (java) 和一些工具命令 (javadoc, jdb 等) 都在其安装路径下的 bin 目录中。因此我们应该将该路径添加到 PATH 变量中。

二、浅谈网上最常见的一种配置方法

    JAVA_HOME : C:\Program Files\Java\jdk1.8.0_112
    CLASSPATH : .;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar
    PATH      : %JAVA_HOME%\bin;%JAVA_HOME%\jre\bin

JAVA_HOME这个变量的配置没什么好说的,配置成自己的JDK安装目录即可。

CLASSPATH这个变量的配置在我看来颇有争议。我搜索出来的JDK1.8安装教程在环境变量配置基本上都是千篇一律,全部包含上述三个环境变量的配置。但问题是CLASSPATH这个变量我们现在还需不需要配置呢?我认为JDK1.6以后的版本应该都是不需要的,而且也不建议去配。不建议的原因如下:
(1)现在的应用基本上不需要设置CLASSPATH,尤其是指向tools.jar 和rt.jar,只要能够找到jre,系统自动会找到这些jre自带的classpath,除非你人为地把这些jar文件移动到其他地方去了;
(2)有些应用程序的启动程序或者启动脚本会自己设置CLASSPATH,如果系统原来有CLASSPATH,反而会造成混淆;
(3)CLASSPATH太多也导致搜索和装载class的速度减慢,因为loadclass的时候,ClassLoader会从整个CLASSPATH里面寻找;
(4)配置CLASSPATH不利于应用的安装部署,一旦运行环境发生变化(如系统升级或者加入新的jar包)经常因手工设置的CLASSPATH不对而造成问题,尤其是跨平台部署的时候,CLASSPATH的目录分隔符都不一样的。

大家也可以自行搜索“CLASSPATH需不需要配置”这个话题,能够看到更多相关的解释。

PATH的配置我觉得应该分情况讨论,如果你纯粹地只是安装了JDK,那么这么配置是没错的,但如果在安装JDK的同时安装了JRE,那么%JAVA_HOME%\jre\bin就有些多余了。因为安装JRE的时候安装程序自动帮你把 JRE的 java.exe 添加到了系统变量中。验证的方法也很简单,大家看到系统环境变量的 path最前面有“%SystemRoot%\system32;%SystemRoot%;” 这样的配置,那么再去Windows/system32下面去看看吧,发现了什么?有一个 java.exe。这种情况下,即使你配置了%JAVA_HOME%\jre\bin,使用的也仍然是C:\Program Files\Java\jre1.8.0_112\bin,而不是C:\Program Files\Java\jdk1.8.0_112\jre\bin,除非手动把%JAVA_HOME%\jre\bin挪到system32变量前面,不过若非必要,建议大家不要这么做,这么做也会导致path变量的值变成很长的一串字符串,而不是列表展示了。

三、总结

经过多方查阅资料,我认为JDK1.6以后版本的安装只需配置如下变量即可(同时安装了JRE):

    JAVA_HOME : C:\Program Files\Java\jdk1.8.0_112
    PATH      : %JAVA_HOME%\bin

参考链接

https://www.jianshu.com/p/a9d1147e3ceb
https://blog.csdn.net/weixin_30121389/article/details/114566490
https://www.cnblogs.com/byx1024/p/12345126.html

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值