Jdk和Jre目录和三个lib目录说明----外部扩展jar包servlet,mysql,oracle等

如下文章转载自a personal blog:For Future,由于昨天下午在cmd模式下编译servlet失败,后来在网上找到这篇文章帮我解决了该问题,我以为挺值得收藏的,而且这篇文章对"两个jre"和"三个lib"的功能简单扼要的解释清楚了.
-----------------------------------------
    lib目录下放置着jar包。程序中的import语句找的就是这些文件!例如:import javax.servlet.RequestDispatcher;
    问题在于,在cmd模式下编译,系统会提示:CheckAccount.java:5: 软件包 javax.servlet 不存在!

    在安装jdk以后,仔细观察下安装路径下的文件夹,其中共计两处包含jre目录!共有三处lib目录!包含javax.servlet的jar包就应该被安置在其中的某一处。首先在tomcat的安装目录下,找到servlet-api.jar(位于D:\Program Files\Apache Software Foundation\Tomcat 6.0\lib\servlet-api.jar)。这个包用winrar解压以后看到内部结构为:
        javax\servlet\http
    
同import语句的结构一致!

    个人硬盘里,lib文件夹的位置以下:
        D:\Program Files\Java\jdk1.6.0_02\jre\lib
        D:\Program Files\Java\jre1.6.0_02\lib
        D:\Program Files\Java\jdk1.6.0_02\lib
    分别为jdk下的lib;jre下的lib;jdk下的jre下的lib。html

    通过验证,把servlet-api.jar包拷贝进入jdk下的jre下的lib下的ext目录后,例如:D:\Program Files\Java\jdk1.6.0_02\jre\lib\ext,import语句顺利经过编译!即:C:\Program Files\Java\jdk1.5.0_08\jre\lib\ext相关的,其余从外部导入的jar包,都放在这个目录下。例如:在工程中导入mysql驱动jar包“mysql-connector-java-3.0.17-ga-bin.jar”,其本质是拷贝了该jar包到ext目录下。其余状况,再添加oracle驱动jar包也相似处理。java

我的补充:mysql

在这里我想说明一下,其实全部的路径都是配置过的,你在程序开发的过程当中用到底jar包,都是根据配置路径找到的,就本文而言状况以下:
在Eclipse中配置了你的JDK环境,方法:在Eclipse中点击window-->preferences,而后选择java-->installed JRES,在右侧就会出现咱们之前配置好的JDK(这里没有演示JDK的安装,你们到网上搜索一下就行),点击OK。程序员

而后再建立项目的时候,在此路径下的全部jar包,都会应用到开发环境中;若是你是先建立了项目,而后再配置jdk路径,则原来项目中引用的不会自动更新。
另外,Eclipse还有其余方式查找路径,好比根据jdk_home,Java_home,ClassPath等等的,这里就不一一阐述了,感兴趣的能够直接到网上查查。web

再来解释下,为何会有两处jre目录?三个lib目录分别什么做用?
    
安装JDK后,Java目录下有jdk和jre两个文件夹,但jdk下还有一个jre文件夹,并且这个jre比前面那个jre在bin目录下多了个server文件夹!
    普通用户装jre便可。开发人员须要安装jdk,其中包括jre。因此jdk目录下包括jre目录。两个jre大致相同,有细微的差异。
    两套 jre ,是针对不一样的工做职责!不一样的 jre 负责各自范围的内容。
    当用户只须要执行 java 的程序时,那么C:\Program Files\Java\jre1.5.0_08的 jre 就 ok !
    当用户是 java 程序员,则须要 java 开发环境。编译时,系统就会优先去找C:\Program Files\Java\jdk1.5.0_08\bin下的“ java 、 javac ”这些命令所在目录或者他们的父目录的 jre 。即开发环境下运行的是 jdk 下的 jre 。sql

再说三个lib目录:
    
JDK下的lib包括java开发环境的jar包,是给JDK用的,例如JDK下有一些工具,可能要用该目录中的文件。例如,编译器等。
    JRE下的lib只是运行java程序的jar包,是为JVM运行时候用的。包括全部的标准类库,和扩展类。
    JDK下的JRE下的lib是开发环境中,运行时须要的jar包。最典型的就是导入的外部驱动jar包。由于编译时,系统找的是jdk下的jre。而不是最外层的jre。
-----------------------------------------
    最后我在这里补充几点:
    1. 在使用Eclipse的时候不须要指定的CLASSPATH,Eclipse会本身搜索.
    2. 独立目录下的jre是通用jre,安装时是可选的(选择了,则会覆盖已有版本)。jdk目录下的jre则是必须的。若是你在eclipse里指定jdk的路径(jre的路径不用你指定,会本身去找的),那么用的就是这个jre。而java, web, start等,用的则是通用jre。api

出处:http://www.cnblogs.com/suyang/archive/2008/03/12/1101330.htmltomcat

相关文章
相关标签/搜索