经编辑后格式良好的问题请见我的BLOG:http://blog.csdn.net/thinkway/archive/2007/10/29/1855450.aspx-------------------------------------------------------------------------------Java的环境变量有三个,分别是JAVA_HOME,PATH和CLASSPATH。一般设置为:JAVA_HOME=D:\Java\jdk_1.6.0.03                //即JDK的安装目录PATH=%JAVA_HOME%/binCLASSPATH=.;%JAVA_HOME%/lib/dt.jar;%JAVA_HOME%/lib/tools.jar我的电脑中安装了JDK1.6,Java环境变量的配置信息与HelloDate.java文件的编译、运行情况如下面所示,该文件为《Thinking in Java》(中文版《Java编程思想》P30)上的一个例子。-------------------------------------------------------------------------------E:\Java>echo %PATH%
C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;D:\Java\jdk1.6.0_03\binE:\Java>echo %JAVA_HOME%
D:\Java\jdk1.6.0_03E:\Java>echo %CLASSPATH%
.;E:\Java>dir
 驱动器 E 中的卷没有标签。
 卷的序列号是 1508-7A22 E:\Java 的目录2007-10-29  23:15    <DIR>          .
2007-10-29  23:15    <DIR>          ..
2007-10-29  22:47               192 HelloDate.java
               1 个文件            192 字节
               2 个目录  6,985,478,144 可用字节E:\Java>type HelloDate.java
// HelloDate.java
import java.util.*;public class HelloDate
{
        public static void main(String[] args)
        {
                System.out.print("Hello, it's: ");
                System.out.println(new Date());
        }
}E:\Java>javac HelloDate.javaE:\Java>dir
 驱动器 E 中的卷没有标签。
 卷的序列号是 1508-7A22 E:\Java 的目录2007-10-29  23:15    <DIR>          .
2007-10-29  23:15    <DIR>          ..
2007-10-29  22:47               192 HelloDate.java
2007-10-29  23:17               509 HelloDate.class
               2 个文件            701 字节
               2 个目录  6,985,474,048 可用字节E:\Java>java HelloDate
Hello, it's: Mon Oct 29 23:17:28 CST 2007E:\Java>
 
-------------------------------------------------------------------------------对编译运行的结果有几处疑问:1. %JAVA_HOME%/lib目录下的tools.jar和dt.jar这两个JAR文件是做什么用的?我的HelloDate.java编译运行时并未设置将这两个文件加入CLASSPATH,但是依然可以成功编译与运行。2. HelloDate.java文件中使用了java.util.Date类,javac编译时,是如何找到这个类的?3. 我在%JAVA_HOME%/jre/rt.jar文件中找到了java.util.Date类的定义,编译及运行的时候是否找到的就是此处的定义?rt.jar并未加入CLASSPATH定义的搜索路径中,而Java又是如何找到这个类的?4. 我在下载JDK1.6并安装完毕之后,bin和lib目录共在三处出现,以bin目录为例,分别是D:\Java\jdk1.6.0_03\bin,D:\Java\jdk1.6.0_03\jre\bin和D:\Java\jre1.6.0_03\bin,而环境变量PATH使用的是第一个,这三处的bin与lib分别都在何时起作用?有什么区别?

解决方案 »

  1.   

    1、tools.jar和dt.jar是JDK使用到的2个包文件
    2、从JDK1.4开始,系统不需要设置classpath,即可自动找到/JDK安装目录/JRE/rt.jar,JAVA编译的时候采用动态链接,需要的时候装载进来即可。
    3、原因同上
    4、第一个是JDK的bin目录,后2个是JRE的bin目录,因为在编译的时候使用的javac命令其他两个目录没有,所以需要设置JDK的bin
      

  2.   

    我的也是jdk1.6  我在配置的时候只有配置了jdk的path路径。其他的都没有配置,也可以正常编译;
    !!!!!!!!!!!
    惊诧啊。网络咖啡大哥  :给点解释噢。
      

  3.   

    JAVA_HOME是JDK总的目录;PATH是各种JAVA命令的目录,比如javac、javadoc、jar、java等等的命令;CLASSPATH是自己编写的类库的目录,自己编写的类库就放在这里。PATH可以放JAVA各种命令绝对路径,比如是D:\Program Files\Java\jdk1.6.0_02\bin;这样就不用在JAVA_HOME里面在设置JDK总的路径了。CLASSPATH放自己编写的类库也是一样,可以存放绝对路径。
      

  4.   

    如果是用eclipse,系统的path里有个值 %SystemRoot%\System32;%SystemRoot%;%SystemRoot%\System32\wbem,不能再设置什么jdk 的path 和 classpath一样可以运行!在c:\windows\system32\下会有java.exe javac.exe等这些。jdk 下的bin路径对在命令行下处理是必要的。