中文字幕日韩精品一区二区免费_精品一区二区三区国产精品无卡在_国精品无码专区一区二区三区_国产αv三级中文在线

玩轉(zhuǎn)Java的CLASSPATH(三)JWhich的工作過程(轉(zhuǎn))

四、JWhich的工作過程
  要精確地測定classpath中哪一個類先被裝載,你必須深入到類裝載器的思考方法。事實上,具體實現(xiàn)的時候并沒有聽起來這么復(fù)雜??你只需直接詢問類裝載器就可以了!

1: public class JWhich {
2:
3: /**
4: * 根據(jù)當(dāng)前的classpath設(shè)置,
5: * 顯示出包含指定類的類文件所在
6: * 位置的絕對路徑
7: *
8: * @param className <類的名字>
9: */
10: public static void which(String className) {
11:
12: if (!className.startsWith("/")) {
13: className = "/" + className;
14: }
15: className = className.replace(´.´, ´/´);
16: className = className + ".class";
17:
18: java.net.URL classUrl =
19: new JWhich().getClass().getResource(className);
20:
21: if (classUrl != null) {
22: System.out.println(" Class ´" + className +
23: "´ found in ´" + classUrl.getFile() + "´");
24: } else {
25: System.out.println(" Class ´" + className +
26: "´ not found in ´" +
27: System.getProperty("java.class.path") + "´");
28: }
29: }
30:
31: public static void main(String args[]) {
32: if (args.length > 0) {
33: JWhich.which(args[0]);
34: } else {
35: System.err.println("Usage: java JWhich ");
36: }
37: }
38: }

  首先,你必須稍微調(diào)整一下類的名字以便類裝載器能夠接受(12-16行)。在類的名字前面加上一個“/”表示要求類裝載器對classpath中的類名字進行逐字精確匹配,而不是嘗試隱含地加上調(diào)用類的包名字前綴。把所有“.”轉(zhuǎn)換為“/”的目的是,按照類裝載器的要求,把類名字格式化成一個合法的URL資源名。

  接下來,程序向類裝載器查詢資源,這個資源的名字必須和經(jīng)過適當(dāng)格式化的類名字匹配(18-19行)。每一個Class對象維護著一個對裝載它的ClassLoader對象的引用,所以這里是向裝載JWhich類的類裝載器查詢。Class.getResource()方法實際上委托裝入該類的類裝載器,返回一個用于讀取類文件資源的URL;或者,當(dāng)指定的類名字不能在當(dāng)前的classpath中找到時,Class.getResource()方法返回null [@more@]

分享名稱:玩轉(zhuǎn)Java的CLASSPATH(三)JWhich的工作過程(轉(zhuǎn))
當(dāng)前網(wǎng)址:http://m.rwnh.cn/article32/jdgepc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站設(shè)計公司外貿(mào)網(wǎng)站建設(shè)、網(wǎng)站維護Google、軟件開發(fā)、網(wǎng)站導(dǎo)航

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

商城網(wǎng)站建設(shè)
靖西县| 太谷县| 玉屏| 漯河市| 丹江口市| 河曲县| 象州县| 当雄县| 商洛市| 拉萨市| 定南县| 保定市| 福贡县| 凤山市| 平远县| 青田县| 西昌市| 台中市| 海兴县| 来宾市| 尖扎县| 兰考县| 轮台县| 中超| 抚顺县| 陈巴尔虎旗| 木里| 泰来县| 汉寿县| 丰镇市| 晋城| 乌鲁木齐县| 历史| 集贤县| 肇东市| 荥经县| 西盟| 连江县| 桂东县| 镇平县| 马鞍山市|