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

相關文章
相關標籤/搜索