刚学Java的时候,很多jdk配置教程都要求设置JAVA_HOME、Path、CLASSPATH3个变量。而Java官网有这么一句话:jdk1.5之后的版本在安装时不用设置CLASSPATH变量。今天我就以jdk1.5为例,总结下三者的区别。
我们要先了解环境变量什么作用。
按下windows键+R打开运行窗口,在里面直接输入system32,回车之后就打开了system32这个文件夹,为什么?
同样的操作我们输入game,为什么没有打开D:\game这个文件夹呢?其实这就是“环境变量”的作用了。
系统就会先在当前目录查找 应用程序(机器可识别的机器码或目录),如果有就会执行文件或打开目录,否则就会在Path中指定的路径中找,
Path(核心)
当我们安装完jdk之后,打开cmd(在非安装目录的路径下)输入javac、java,会提示找不到命令。我们需要将命令所在的路径添加到Path系统变量中,这时,系统就可以找到可执行文件了。
Windows在查找可执行文件是这样的:在终端输入java时,系统就会先在当前目录查找java程序,如果有就会执行java,否则就会在Path中指定的路径中找,因为我们在PATH配置了...\jdk\bin,系统会在这个路径下找到Java程序并执行。否则就提示找不到命令。Path的作用其实就是方便我们使用一些命令。
JAVA_HOME(为了方便设置path)
JAVA_HOME里面的内容是JDK安装目录。其实不设置JAVA_HOME也是可以的,只要有Path就行了。但是设置JAVA_HOME可以方便在Path中使用、更新JDK目录。比如,jdk的安装路径是C:\jdk1.5.0_22,Path设置为C:\jdk1.5.0_22\bin,而当我们把JAVA_HOME设为C:\jdk1.5.0_22时,设置Path就可以写成%JAVA_HOME%\bin,以后当我们使用其他版本的jdk,就可以只修改JAVA_HOME的值,此外,当我们要使用Redis等组件时,也可以灵活使用JAVA_HOME做些改动。
CLASSPATH(JDK 1.5之后,不必设置)
编译、运行Java程序时,JRE会去该变量指定的路径中搜索所需的类(.class)文件,很多配置教程都让我们设置CLASSPATH环境变量为:.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar,但是其实没有必要。以jdk1.5为例,当我们配置完成后,写个HelloWorld.java。
在cmd中进入文件目录,可以发现依然可以编译、运行
再查看运行的详细信息,可以看到没有CLASSPATH的情况下rt.jar、当前目录也是可以被JVM找到的。
也就是说,在JDK 1.5之后,完全可以不配置这个变量。不配置CLASSPATH,JRE会自动搜索当前路径下的类文件。编译、运行时,系统可以自动加载dt.jar和tools.jar文件中的Java类。
一般配置为:
系统环境变量:
CLASSPATH系统环境变量 .;%JAVA_HOME%\lib;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar
JAVA_HOME系统环境变量 D:\Program Files\Java\jdk1.8.0_201
path 系统环境变量:
%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;%SYSTEMROOT%\System32\WindowsPowerShell\v1.0\;C:\Program Files\Microsoft\Web Platform Installer\;C:\Program Files (x86)\Microsoft ASP.NET\ASP.NET Web Pages\v1.0\;C:\Program Files\Microsoft SQL Server\110\Tools\Binn\;D:\Program Files\VisualSVN Server\bin;D:\Program Files\TortoiseSVN\bin;D:\Program Files\TortoiseGit\bin;d:\Program Files (x86)\Git\cmd;C:\Program Files\Microsoft SQL Server\130\Tools\Binn\;C:\Program Files\dotnet\;%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;C:\Program Files\Redis\;C:\Program Files\nodejs\
这里说一下基础知识,如果你需要运行java程序,只需安装JRE就可以了。如果你需要编写java程序,需要安装JDK。
简单来说,JRE可以支撑Java程序的运行,包括JVM虚拟机(java.exe等)和基本的类库(rt.jar等),JDK可以支持Java程序的开发,包括编译器(javac.exe)、开发工具(javadoc.exe、jar.exe、keytool.exe、jconsole.exe)和更多的类库(如tools.jar)等。
2、Linux操作系统的环境变量和用户变量文件系统相对简单
比方说 系统变量的文件都在/etc/profile 下面 ,而用户文件是在 ~/bash_profile下面(每个用户文件不在同一个)
参考原文链接:https://blog.csdn.net/sinat_30973431/article/details/82556821
原文地址:https://www.cnblogs.com/erlongxizhu-03/p/12114652.html