为什么classpath中不设置Java\jdk\jre\lib\ext路径
请各位牛人帮忙解释一下我的这个困惑
看了几篇博客,以为classpath是用来指出开发java程序时所import的那些包的路径,所以就将jdk\lib理解为是包含开发java所需import的包的jar文件
可是在我编译servlet程序的时候,我是将servlet-api.jar放到jdk\jre\lib\ext下的,这也就说明servlet程序中import 的 javax.servlet.*这个包不是位于jdk\lib下,而是位于jdk\jre\lib\ext下,但是在classpath中并没有设置jdk\jre\lib\ext这个路径啊?编译servlet程序的时候又是怎么找到这个javax.servlet.*包的呢?
到底jdk\lib和jdk\jre\lib中存放的.jar文件是用来干什么的?
我在另一篇博客里看到这样一句话:JDK下的lib包括java开发环境的jar包,是给JDK用的,例如JDK下有一些工具,可能要用该目录中的文件。例如,编译器等
那么,jdk\lib究竟是用来包含开发java所需import的包的jar文件的,还是包含供jdk本身工具所使用文件的?
望哪位牛人可以给我指点一下上述问题,不胜感激(由于我第一次发贴,给分时总提示我分不够,所以没有分给回复的人,还请原谅)

解决方案 »

  1.   

    看看java虚拟机吧,我也正准备看呢,我也不是太明白
      

  2.   

    因为,它默认就会加载这个路径 的。是由extClassLoader默认加载的。
      

  3.   

    rt.jar 中的 java.lang 是由引导类加载器加载的
    jre/lib/ext 是由扩展类加载器加载的而你自己添加的 jar 包是由系统类加载器加载的另外,不允许将你自己的 jar 包放到 jre/lib/ext 目录中去,就算是 servlet 的 API 也不允许这么做。