Java中JAVA_HOME, PATH,CLASSPATH的作用和配置值。

这三个变量都可以设置在系统变量中(右键我的电脑,属性,高级系统设置,环境变量(弹出的框中上面是用户变量,下面是环境变量))
Java中JAVA_HOME, PATH,CLASSPATH的作用和配置值。
如图,点击新建之后,上面是变量名,如path,classpath,java_home。下面是变量的值。


  • JAVA_HOME 的值是JDK的安装目录,C:\Program Files\Java\jdk1.8.0_92。运行Tomcat需要设置此变量。

  • PATH:path变量的值是用户变量中的值与系统变量中的值的叠加。
    配置好JAVA_HOME后,就可以用以下方式把JDK的bin目录添加到PATH中:%JAVA_HOME%\bin(注意要与前面的值用英文分号分开)。这样当更改了JDK的安装目录后,就只需改JAVA_HOME,而无需改PATH了,因为操作系统可以自动算出新的bin目录。

当我们安装好JAVA后,若没有正确配置PATH环境变量,则在命令行窗口下运行命令java -version(显示JAVA的版本)命令时,会出错。这条错误信息的意思是,你要求运行的java这条命令我不认识,不知道是个什么玩意儿。那么究竟这个java命令是何方神圣呢?在JDK的安装目录下(我的是C:\Program Files\Java\jdk1.8.0_92),有一个bin目录(binary:二进制可执行文件)。打开此目录,会发现大量的可执行文件(后缀名为exe的文件。Windows默认隐藏文件后缀名。要显示后缀名,见文章最后)。其中有一个可执行文件即为java.exe。实际上我们执行java命令,就是要运行java.exe这个可执行文件(我们运行其他命令,本质上也是要执行某个程序文件),javacjava编译为.class 文件,也是同理。



  • CLASSPATH:设置方法: .;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar
    顾名思义,就是指要在哪里去寻找字节码文件(.class文件),因为我们知道JAVA程序的执行实际上是执行这些字节码文件。
    CLASSPATH有一点容易出错的是:若不设置,它的默认值是当前目录;而你设置后,又没有把当前目录(“.”,即英文的点)添加进去,则它就不再包含当前目录(这点与PATH不同,PATH总是包含当前目录)不加点的时候会导致找不到类的错误。因此,设置CLASSPATH时,一般先把添加当前目录,再添加其他值(不同的值之间用英文分号分开)。一般JAVA初学者不必自己设置CLASSPATH。当你需要用到第三方jar包(如JDBC驱动程序),而又没有使用eclipse、ant等开发工具,只是纯粹地使用javac、java等命令开发程序时,需要手动设置CLASSPATH。

classpath是javac编译器的一个环境变量。它的作用是指定类搜索路径,它与import、package关键字有关。当你improt.java.util.*时,编译器面对import关键字时,就知道你要引入java.util这个package中的类;但是编译器如何知道你把这个package放在哪里了呢?所以你首先得告诉编译器这个package的所在位置;如何告诉它呢?就是设置CLASSPATH啦。 如果java.util这个package在c:\jdk\ 目录下,你得把c:\jdk\这个路径设置到CLASSPATH中去!当编译器面对import java.util.*这个语句时,它先会查找 classpath所指定的目录,并检视子目录java\util是否存在,然后找出名称吻合的已编译文件(.class文件)。如果没有找到就会报错!

classpath有点像c\c++编译器中的include路径的设置哦,是不是?当c\c++编译器遇到include 这样的语句,它是如何运作的?哦,其实道理都差不多!搜索include路径,检视文件!当你自己开发一个package时,然后想要用这个package中的类;自然,你也得把这个package所在的目录设置到CLASSPATH中去!
CLASSPATH的设定,对JAVA的初学者而言是一件棘手的事。所以Sun让JAVA2的JDK更聪明一些。你会发现,在你安装之后,即使完全没有设定CLASSPATH,你仍然能够编译基本的JAVA程序,并且加以执行

可以看出,CLASSPATH 里能包含大量备用的搜索路径。然而,使用JAR 文件时要注意一个问题:必须将JAR文件的名字置于类路径里,而不仅仅是它所在的路径。所以对一个名为grape.jar 的JAR 文件来说,我们的类路径需要包括:.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar

个人理解说明:其实从上面可以看出,如果你用记事本来写java程序(在Window下),并用cmd命令窗口中输入javac,java命令,如果你的代码中用到了其它的jar或者你自己的写的类,但又和你的主程序没在一个包下,这时你就要在classpath中设置你要用到的jar或者自己写的类的路径,让Java在编译器可以找到你要用的东西,如上面例子所示。 在我们用一些工具时,如eclipse中,我们可以把一些Jar包什么的添加进来,然后搜索路径的事工具帮我们做了,所以不用在手动加进去。所以在eclipse实际的开发中,没有用到系统配置的classpath,而是自己会生成一个.classpath的文件;只有用cmd javac 编译时会用到系统的classpath

摘录自 https://blog.51cto.com/legend2011/553255



Window文件显示后缀名:
在桌面双击我的电脑(计算机)—> 工具—> 文件夹选项 —> 查看 —>把隐藏已知文件类型的扩展名前面对的勾取消—>确定(或者应用)让你的设置生效 ,见下图。)
Java中JAVA_HOME, PATH,CLASSPATH的作用和配置值。