① PATH的困惑?
先安装JDK,譬如安装在如下路径:
然后就可以配置环境变量了:
右击我的电脑--->属性--->高级--->环境变量--->单击用户变量的新建--->
变量名为PATH,变量值为jdk下bin目录的整个路径。然后点击确定--->确定--->确定。
我们在C盘下写一个简单的java程序测试一下:
public class Hello{ public static void main(String[] args){ System.out.println("Hello World..."); } }在cmd中编译运行:
大功告成!
注意:
新建环境变量时有两种选择:用户变量和系统变量。用户变量用于设置当前用户的环境变量,而系统变量用于设置整个系统的环境变量。
如果仅仅安装了JDK,却没有配置环境变量的话,我们到cmd中使用java或javac命令时,会出现错误。这是因为:虽然我们已经在计算机中安装了JDK,JDK的路径下也包含了java和javac这两个命令,但是计算机不知道到哪里去寻找这两个命令。
计算机如何查找命令呢?
windows操作系统根据Path环境变量来查找命令。Path环境变量的值是一系列路径,windows操作系统将在这一系列的路径中依次查找命令,如果能找到这个命令,则该命令是可执行的。否则将出现“‘xxx’不是内部或外部命令,也不是可运行的程序或批处理文件”的提示。windows操作系统不区分大小写,设置Path和PATH并没有区别。
② JAVA_HOME的困惑?
初学Java时一般的书籍都会介绍还需要配置一个 JAVA_HOME 环境变量,但是上面我们只配置了一个PATH环境变量,并且经过测试已经可以编译运行程序了,这到底是为什么 呢?
其实是这样的:JAVA_HOME相当于一个变量,以我的安装目录而言,JAVA_HOME应该取值 E:\Java\jdk1.6.0_12,然后配置PATH环境变量时就可以写成%JAVA_HOME%\bin,%JAVA_HOME%就相当于E:\Java\jdk1.6.0_12。其实你不叫JAVA_HOME,你叫JAVA_FAMILY,也没有问题,只是在配置PATH时就写%JAVA_FAMILY%\bin,明白了吧?那为什么要有JAVA_HOME呢?我直接写全路径不就行了吗?对的,确实可以!之所以有JAVA_HOME,有三个原因:
① 如果你的JDK的安装路径比较深的话,你配置PATH时写全路径就很麻烦,很长,虽然应该拷贝,但是很长的话看起来很不舒服。
② 万一哪天你的JDK路径被移动了的话,你的程序就跑不起来了。此时你需要修改环境变量,你只需要修改JAVA_HOME的路径为新路径即可,那些引用JAVA_HOME的环境变量根本不需要修改。如果你配置时不使用JAVA_HOME,那么此时你需要修改的就不止一处,很容易出错。
③ 最后一个原因,也可能是最重要的原因。你在后来学习JavaWeb开发时,很可能会安装Tomcat,安装完Tomcat后想要使用的话,必须先配置JAVA_HOME环境变量,注意此时名字不可更改,因为Tomcat这个软件默认就寻找JAVA_HOME这个名字。
③ CLASSPATH的困惑?
几乎每一本介绍Java入门的图书都会介绍 CLASSPATH 环境变量的设置,但对于CLASSPATH的作用却常常语焉不详。
实际上,如果使用1.5以上版本的JDK,完全可以不用设置CLASSPATH------正如上面的测试程序所展现的,即使不设置CLASSPATH,程序一样可以编译运行通过,没有任何问题。那么CLASSPATH的作用是什么呢?当使用“java Java类名”命令来运行Java程序时,JRE到哪里去搜索Java类呢?答案是当前路径下,没错,就是这个答案。但是,1.4以前版本的JDK没有设计这个功能,这意味着即使当前路径已经包含了Hello.class,并在当前路径下执行“java Hello”,系统将一样提示找不到Hello类。
如果使用1.4以前版本的JDK,就需要配置CLASSPATH环境变量,添加一点(.)告诉JRE需要在当前路径下搜索Java类。除此之外,编译和运行Java程序还需要JDK的lib路径下的dt.jar和tools.jar文件中的Java类,因此还需要把这两个文件添加到CLASSPATH环境变量里。因此如果使用1.4以前版本的JDK来编译和运行Java程序,则需要设置CLASSPATH的值为:.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar。
后来的JRE会自动搜索当前路径下的类文件,而且使用Java的编译和运行工具时,系统可以自动加载dt.jar和tools.jar文件中的Java类,因此不再需要设置CLASSPATH。