歡迎使用我的 在線工具

          小D

          讀歷史、看小說、寫程序都是我所愛。技術不好,頭腦不靈光,靠的是興趣。
          隨筆 - 35, 文章 - 25, 評論 - 13, 引用 - 0
          數據加載中……

          Java的ClassLoader

          ??//當前類的getResource等取得本地資源的方法是以當前類所在的文件夾為當前目錄,以bin目錄
          ??//也就是發布后的user.dir目錄為根目錄。
          ??//當前ClassLoader去本地資源是以bin目錄,或發布后的user.dir目錄為當前目錄。
          ??//而ClassLoader的根目錄恕我不知。
          ??//通過如下測試,可得出ClassLoader是沒有根目錄的。
          //??URL ss = SoundPlayTest.class.getClassLoader().getResource("");
          //??System.out.println(ss.getPath());
          ??//我想Eclipse沒有使用系統的ClassPath,它的ClassPath是在工程的.classpath文件中定義的。而且我想eclipse是使用的自己的ClassLoader的。

          ClassLoader的機制:

          Bootstrap ClassLoader/啟動類加載器
          主要負責jdk_home/lib目錄下的核心 api 或 -Xbootclasspath 選項指定的jar包裝入工作。
          Extension ClassLoader/擴展類加載器
          主要負責jdk_home/lib/ext目錄下的jar包或 -Djava.ext.dirs 指定目錄下的jar包裝入工作。
          System ClassLoader/系統類加載器
          主要負責java -classpath/-Djava.class.path所指的目錄下的類與jar包裝入工作。
          User Custom ClassLoader/用戶自定義類加載器(java.lang.ClassLoader的子類)
          在程序運行期間, 通過java.lang.ClassLoader的子類動態加載class文件, 體現java動態實時類裝入特性。

          ??//getResourceAsStream和ClassLoader.getSystemResourceAsStream的關系
          ??//首先getResourceAsStream調用自己的ClassLoader加載,如果沒有就是用ClassLoader.getSystemResourceAsStream
          ??//來加載資源。getSystemResourceAsStream從當前ClassLoader的類加載搜索路徑中查找資源。所以使用getResourceAsStream
          ??//也可以加載當前Classpath中的資源。

          ?

          posted on 2009-11-04 20:53 vagasnail 閱讀(435) 評論(0)  編輯  收藏 所屬分類: Java

          主站蜘蛛池模板: 新沂市| 浮梁县| 徐闻县| 台南市| 浦北县| 南涧| 宜兴市| 北碚区| 刚察县| 海晏县| 塘沽区| 北宁市| 肃宁县| 娱乐| 文化| 尼玛县| 佛坪县| 新田县| 烟台市| 文安县| 乐至县| 禹州市| 安新县| 兴宁市| 景德镇市| 定兴县| 大新县| 育儿| 上犹县| 财经| 通辽市| 吉水县| 普定县| 土默特右旗| 黄骅市| 奈曼旗| 饶阳县| 建平县| 盐山县| 富川| 镇安县|