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。

    經過驗證,把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包也類似處理。

個人補充:

在這里我想說明一下,其實所有的路徑都是配置過的,你在程序開發的過程中用到底jar包,都是根據配置路徑找到的,就本文而言情況如下:
在Eclipse中配置了你的JDK環境,方法:在Eclipse中點擊window-->preferences,然后選擇java-->installed JRES,在右側就會出現我們以前配置好的JDK(這里沒有演示JDK的安裝,大家到網上搜索一下就行),點擊OK。

然后再創建項目的時候,在此路徑下的所有jar包,都會應用到開發環境中;如果你是先創建了項目,然后再配置jdk路徑,則原來項目中引用的不會自動更新。
另外,Eclipse還有其他方式查找路徑,比如根據jdk_home,Java_home,ClassPath等等的,這里就不一一闡述了,感興趣的可以直接到網上查查。

再來解釋下,為什么會有兩處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 。

再說三個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。

出處:http://www.cnblogs.com/suyang/archive/2008/03/12/1101330.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM