网上找了很长时间,就是有点搞不清楚,这JDK的配置CLASSPATH中的dt.jar和tools.jar这两个文件到底是干什么的,有人说这个dt.jar是关于swing的   打开这个包确实可以看到和swing有关的类,说是如果用到swing就要配置这classpath,但是rt.jar中的swing呢  这个不才是真正的包含swing类库吗?  还有就是这两个包到底是用作开发的类库,还是JDK中的JAVAC等程序运行要的类库。 如果不路径这两个包对我们开发的程序中有什么影响?

解决方案 »

  1.   

    dt.jar和tools.jar是两个java最基本的包,里面包含了从java最重要的lang包到各种高级功能如可视化的swing包,是java必不可少的。
    而path下面的bin里面都是java的可执行的编译器及其工具,如java,javadoc等,你在任意的文件夹下面运行cmd键入javac,系统就能自动召见java的编译器就是归功于这个环境变量的设置 rt.jar是JAVA基础类库,dt.jar是关于运行环境的类库,tools.jar是工具类库 设置在classpath里是为了让你 import * 
    --------------------------------------------------------------- web系统都用到tool.jar 你用winrar看看里面是什么内容啦 
    --------------------------------------------------------------- 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时最好加上 
    dt.jar好像是swing的一些什么类,Eclipse开发环境默认的JRE也没有包括它。应该没用。
    tools.jar应用服务器用来编译JSP文件,应用服务器自己会加载,不需要自己设置。
    关于path和classpath的含义: 
    1.path变量的含义就是系统在任何路径下都可以识别java,javac命令 
    2.classpath变量的含义是告诉jvm要使用或执行的class放在什么路径上,便于JVM加载class文件,.;表示当前路径,tools.jar和dt.jar为类库路径。如果不用Swing里面的东西,可以不加dt.jar。 tools.jar里面是最基本的工具类,比如javac,不加是无法做开发的。 
     1.  rt.jar   默认就在   根classloader的加载路径里面   放在claspath是多此一举  不信你可以去掉classpath里面的rt.jar  然后用   java   -verbose   **X   的方式运行一个简单的类   就知道   JVM的系统根Loader的路径里面  不光rt.jar   jre\lib下面的大部分jar   都在这个路径里    
     2.  tools.jar   是系统用来编译一个类的时候用到的   也就是javac的时候用到  javac   **.java  实际上就是运行     java   -Calsspath=%JAVA_HOME%\lib\tools.jar      xx.**.Main      **.java     javac就是对上面命令的封装   所以tools.jar   也不用加到classpath里面 
     3.  dt.jar是关于运行环境的类库,主要是swing的包         你要用到swing时最好加上 
    dt.jar是关于运行环境的类库,主要是swing的包   
    tools.jar是关于一些工具的类库   
    rt.jar包含了jdk的基础类库,也就是你在java   doc里面看到的所有的类的class文件

    编译和运行需要的都是toos.jar里面的类 , 分别是   
      sun.tools.java.*;   
      sun.tools.javac.*; 
      

  2.   

    我也不明白,翻看了一下tools.jar和dt.jar发现:tools下的若干个文件里面有java、javac、javap等文件夹,应该就是对应相应命令;tools中还有一些与help、applet、jvm、security、datatype相关的文件夹,可能就是与相应命令有关的一些参数吧;dt.jar则大部分是与swing有关的东西。期待高人指点......
      

  3.   

    如果你的 JDK 版本是 JDK 5 或者之后的,那就把 classpath 去掉,编译器会自动去寻找 tools.jar 的,如果用的是 JDK 5 以下的版本就加上去吧。
      

  4.   

    最新的JDK版本连基本的环境都不用配置  
      

  5.   

    刚刚试了试  tools.jar如果删除了  javac无法运行   但是Java可以运行  就是说这个包  只是和javac运行有关   实际开发出的程序运行用不到这些包    还有我同样试了试了  jconsole和htmlconverter这两个包  如果删除了这两个包  那么jconsole和htmlconverter这个两个程序就不能运行    我们应该可以得出结论 这些包都是  JDK中的工具运行使用的包  不是开发用到的包  我们正常开发时导入的包不在这几个包中   但是JDK1.6的JAVAC和jconsole,htmlconverter等这些工具已经自己可以找到这些包  不用在配置CLASSPATH了    
      

  6.   

    恩 确实,前些天系统重装,新下了个JDK装上,刚要去配置,结果点了下Eclipse竟然能打开,这才知道新版本功能更强了
      

  7.   

    不错 学习了
    貌似 较新的JDK不用在为环境变量而麻烦了
      

  8.   

    不错,试了一下发现装上JDK1.7后,只需要配置PATH,ECLIPSE就可以启动了。其它都不用设置了
      

  9.   

    tools.jar这个包用来在运行时编译java源文件,jsp转换之后的servlet程序编译就是这样的