现在学习java,看见一本书上对classpath只配置了一个变量,为jdk1.4\jre\lib\rt.jar;为什么只配置一个变量就行了呢,而我的机子上配置如下:
set classpath=.;c:\ProgrameFiles\jdk1.5\lib\dt.jar;c:\ProgrameFiles\jdk1.5\lib\tools.jar;
感觉和那本书上讲的配置几乎完全不一样。我的是在jdk的lib目录下,而它的在jre目录的lib目录下,另外它的是rt.jar,我的是dt.jar和tools.jar。请解释下它那样配置和我这样配置的原因和区别。谢谢

解决方案 »

  1.   

    classpath 是运行时需要用到的类所在的 jar, 而 JRE 本身自带的 rt.jar 是不需要明确添加的。
    你的 jdk1.5\lib\xx.jar 那是 jdk 自带的工具类库,比如编译java 文件和其它 CORBA/EJB 之类的工具类可以在 tools.jar 里面找到,它们一般是开发人员用的,而 rt.jar 是 JRE 本身用的。程序跑起来本身一般不需要 tools.jar 之类的类库但需要 rt.jar.至少你的 classpath 下需要什么 jar 是根据你的需要,一般来说你开发时最常用的比如 oracle 驱动之类的你可以直接放到 classpath 变量下,这样你使用 cmd.exe 来运行程序时可以少输入几个路径,因为我们可以用变量代替很多个 jar 文件。
      

  2.   

    1. 
    rt.jar 默认就在 根classloader的加载路径里面 放在claspath是多此一举 
    不信你可以去掉classpath里面的rt.jar 然后用 java -verbose XXXX 的方式运行一个简单的类 就知道 JVM的系统根Loader的路径里面 不光rt.jar jre\lib下面的大部分jar 都在这个路径里 2. tools.jar 是系统用来编译一个类的时候用到的 也就是javac的时候用到 javac XXX.java 实际上就是运行 java -Calsspath=%JAVA_HOME%\lib\tools.jar xx.xxx.Main XXX.java javac就是对上面命令的封装 所以tools.jar 也不用加到classpath里面 3. 
    dt.jar是关于运行环境的类库,主要是swing的包 你要用到swing时最好加上 注: 
    1)在编译时java使用的是JDK中的JRE中的JAR。 
    C:\Java\jdk1.5.0_06\jre\lib 
    2)采用java运行时,也用到是JDK中的JRE,因此测式发现在把rt.jar文件删除都会出错,因此可以 
    得到rt.jar是编编和运行时都要使用。其实lib下面的很多包都要使用到。
      

  3.   

    写书的人得很大多似乎都没有实践过,都是照搬照抄,在这种学术风比较乱的情况下都是这样的,java 6 不用配置就可以了。实践才是最好的指导老师。
      

  4.   

    这也要配吗,我以为lib里的东西都不用配呢,只有用到特殊功能时才需要添加额外的jar包。比如,要用到servlet,我的classpath里就一个C:\Program Files\Apache Software Foundation\Tomcat 6.0\lib\servlet-api.jar;没其他的了
      

  5.   

    JDK里面的工具也是用JAVA编写的,它们本身运行的时候也需要一套JRE,如C:\Program Files\Java\jdk1.5.x\目录下的JRE。而C:\Program Files\Java\目录下的JRE是用来执行我们自己编写的JAVA程序。当然,两套JRE中的任何一套都可以用来执行我们自己编写的JAVA程序,但是JDK里面的工具只能由C:\Program Files\Java\jdk1.5.x\目录下的JRE来执行。
      

  6.   

    我现在是用命令行的方式来运行java程序,没有装集成开发环境,所以想问问到底怎么配就可以了
      

  7.   

    回楼上 配好PATH就可以了  路径是JDK下的bin目录
      

  8.   

    你用IDE的话,根本不用管java的lib包,其他有需要的再添加就行了
      

  9.   

    现在都jdk1.6了,至少也是jdk1.5了
      

  10.   

    classpath是 自定义类库寻找路径哦 !!我设的是lib