以前只知道先配置环境变量,但是为啥要这样干呢,我也不太清楚,好像不这么弄就是不行,嗯,就是不行,然后就照着教程或者网上自己搜的步骤去弄,弄完发现确实可以用了,但是具体为什么呢?
我其实也不太清楚,自己也是搜了一下,感觉下面是比较符合我心目中的几组答案:
第一组:::
- 1. PATH环境变量。作用是指定命令搜索路径,在shell下面执行命令时,它会到PATH变量所指定的路径中查找看是否能找到相应的命令程序。我们需要把 jdk安装目录下的bin目录增加到现有的PATH变量中,bin目录中包含经常要用到的可执行文件如javac/java/javadoc等待,设置好 PATH变量后,就可以在任何目录下执行javac/java等工具了。
- 2. CLASSPATH环境变量。作用是指定类搜索路径,要使用已经编写好的类,前提当然是能够找到它们了,JVM就是通过CLASSPTH来寻找类的。我们 需要把jdk安装目录下的lib子目录中的dt.jar和tools.jar设置到CLASSPATH中,当然,当前目录“.”也必须加入到该变量中。
- 3. JAVA_HOME环境变量。它指向jdk的安装目录,Eclipse/NetBeans/Tomcat等软件就是通过搜索JAVA_HOME变量来找到并使用安装好的jdk。
第二组:::
- 设置JAVA_HOME: 一是为了方便引用,比如,JDK安装在C:\jdk1.6.0目录里,则设置JAVA_HOME为该目录路径, 那么以后要使用这个路径的时候, 只需输入%JAVA_HOME%即可, 避免每次引用都输入很长的路径串;
二则是归一原则, 当JDK路径改变的时候, 仅需更改JAVA_HOME的变量值即可, 否则,就要更改任何用绝对路径引用JDK目录的文档, 要是万一没有改全, 某个程序找不到JDK, 后果是可想而知的----系统崩溃!
三则是第三方软件会引用约定好的 JAVA_HOME 变量, 不然, 你不能正常使用该软件。
在系统环境变量那一栏中点 -> 新建 JAVA_HOME (JAVA_HOME指向的是JDK的安装路径) - path 变量: path 变量使得我们能够在系统中的任何地方运行java应用程序,比如 javac、java、javah 等等,这就要找到我们安装 JDK 的目录,
假设我们的JDK安装在 C:\jdk1.6.0 目录下,那么在 C:\jdk1.6.0\bin 目录下就是我们常用的 java 应用程序,我们就需要把 C:\jdk1.6.0\bin 这个目录加到 path 环境变量里面。 - classpath 变量 :
classpath 环境变量,是当我们在开发java程序时需要引用别人写好的类时,要让 java 解释器知道到哪里去找这个类。通常,sun 为我们提供了一些额外的丰富的类包,一个是 dt.jar,一个是 tools.jar,这两个 jar 包都位于 C:\jdk1.6.0\lib 目录下,所以通常我们都会把这两个 jar 包加到我们的 classpath 环境变量中 set classpath=.;C:\jdk1.6.0\lib\tools.jar;C:\jdk1.6.0\lib\dt.jar。
总结:
配置path的原因是让你可以在控制台编译、运行你的java程序而不必进入到java程序目录去运行,例如控制台命令:java -version,要执行此命令,控制台会先在当前目录找java.exe程序,找不到会去path变量中指定的路径去找此命令,如果没有找到就不会执行,java.exe是在java程序目录中的bin目录下,所以path才会配到java程序的bin目录……
classpath变量通常是新建的变量。在编译、运行java程序时会在它指定的目录下去找你所要用到的class,也是先在本目录下找,然后在指定目录下找,都找不到就会报错了……
path可以说主要是为了方便,让你无论在哪个目录下都可以直接使用javac等命令,否则就只有到bin目录下执行javac和java命令了……另外我们可以在运行里直接打命令notepad打开一个记事本程序就也是path变量的作用,如果你把path变量删掉,这个notepad命令也就不起用了,原来可以在运行里运行的命令也都无效了……
classpath是为了方便使用java类库,如果以后用到第三方类库的话,你就有2中选择,可以也为他们配calsspath,或者把它们直接复制到你自己的class所在目录下……