<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    石建 | Fat Mind

    .java源文件是如何被找到的?

    已遷往 http://fatmind.iteye.com

    題記:.java源文件是如何被找到的?.class字節碼文件是如何被找到的?內容:全部借鑒《Java深度歷險》

    Package:命名空間的問題,隔離類之間的關系。

    Import:聲明引入的類的路徑(僅在編譯時有作用,編譯后的文件,類的聲明已經為全路徑);好處“明晰的代碼結構,分離在多個文件;幫助實現動態鏈接的功能”。

    一、編譯

    package edu.nctu;

     

    import com.taobao.Test;

    import edu.nctu.*;

     

    public class C

    {

    public void print() {

                  System.out.println("package test") ;

           }

    }

     

    步驟:

    1. 根據classpath建立,“類相對路徑參考表”

    如:javac –cp .;d:/test/,在d:/下執行,結果:d:/d:/test/

    2. 以“類相對路徑參考表”作為相對起始路徑,驗證能夠找到所有要用的package

    根據import引入的package或全限定類名,import packagename.classnamepackagename之中的“.”“/”取代.

           2.1 com.taobao.*形式,驗證在d:/目錄下是否存在com/taobao/目錄,若不存在,依次檢查d:/test/

           2.2 com.taobao.Test形式,驗證是否存在com/taobao/Test,與上相同。

    3. 建立“類參考表”和“相對類參考表”

           3.1 類參考表:com.taobao.Test

           3.2 類相對參考表:com.taobao.*

    4. 解析class{} 包含的代碼

    是否全限定類名

           4.1 是,絕對路徑 =“類相對路徑參考表”+全限定類名,查找,不存在為錯誤;

           4.2 否,絕對路徑 =“類相對路徑參考表”,查找;

                  4.2.1是,編譯

                  4.2.2否,解析package

                         4.2.2.1 在類參考表,是否存在1以上的同名類,出錯;否則,絕對路徑 =“類相對路徑參考表”+ “類參考表”,正確。

                         4.2.2.2 在類參考表找不到,絕對路徑 = “類相對路徑參考表”+ “相對類參考表”,若存在一個以上的類,出錯;否則,正確。

    提醒:

    1.       如果已經存在A .class文件,A .java不是必須的;

    2.       編譯器在找到源碼或字節碼,對會驗證是否屬于此package,但沒有通過make機制的編譯,是不會驗證的;make機制,即編譯器自動維護具有相互依賴關系的文件;javac命令直接編譯文件,如:javac -cp d:/test com.edu.C.java,編譯器角度:com.edu.C.java 是一個文件名,且沒有通過make機制,所以-cp指定的路徑建立的“類相對路徑參考表”也不會使用,編譯器直接在當前目錄下查找com.edu.C.java,結果 ClassNotFoundException 。

    二、運行

    1、 編譯結束后,import指令已經不存在,類被替換為“全限定類名”

    2、 運行時類的加載,都是通過classloader進行,所以必須遵循正確的“包目錄”結構,不管是否直接通過命令行執行。

    步驟:

    1.       建立“字節碼路徑參考表”,根據classpath

    2.       絕對路徑 = “字節碼路徑參考表”+ 全限定類名,查找;加載;找不到,報錯。




    posted on 2010-10-17 01:29 石建 | Fat Mind 閱讀(1372) 評論(0)  編輯  收藏 所屬分類: 一點理解

    導航

    <2010年10月>
    262728293012
    3456789
    10111213141516
    17181920212223
    24252627282930
    31123456

    統計

    常用鏈接

    留言簿

    隨筆分類

    隨筆檔案

    搜索

    最新評論

    What 、How、Why,從細節中尋找不斷的成長點
    主站蜘蛛池模板: 青青草a免费线观a| 18禁成人网站免费观看| 国产福利免费在线观看| 国产精品亚洲一区二区麻豆| 日韩精品人妻系列无码专区免费| 亚洲成AV人片一区二区| 日本免费高清视频| 亚洲丁香色婷婷综合欲色啪| 性色午夜视频免费男人的天堂| 国产∨亚洲V天堂无码久久久| 免费av片在线观看网站| 久久亚洲日韩看片无码| 国产v精品成人免费视频400条| 国产精品高清视亚洲一区二区 | 毛片免费视频播放| 亚洲人成网站在线在线观看| 国产又黄又爽又猛的免费视频播放 | 亚洲国产综合精品中文第一区| 伊人久久免费视频| 中文字幕在线观看亚洲视频| 精品少妇人妻AV免费久久洗澡| 国产在亚洲线视频观看| 国产成人亚洲精品91专区手机| av永久免费网站在线观看| 亚洲视频中文字幕在线| 成年女人免费视频播放体验区| 免费的黄色的网站| 亚洲AV无码成人精品区天堂| 99视频全部免费精品全部四虎| 亚洲第一综合天堂另类专| 中文字幕第一页亚洲| 99久热只有精品视频免费看| 亚洲欧洲AV无码专区| 国产精品V亚洲精品V日韩精品 | 免费永久看黄在线观看app| 国产成人无码精品久久久免费| 老色鬼久久亚洲AV综合| 日韩成人在线免费视频| a毛片久久免费观看| 亚洲日韩中文字幕一区| 亚洲情综合五月天|