国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Java > 正文

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

2019-11-17 06:10:40
字體:
來源:轉載
供稿:網友
四、JWhich的工作過程
  要精確地測定classpath中哪一個類先被裝載,你必須深入到類裝載器的思考方法。事實上,具體實現的時候并沒有聽起來這么復雜——你只需直接詢問類裝載器就可以了!

1: public class JWhich {
2:
3: /**
4: * 根據當前的classpath設置,
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.23: "' found in /n'" + classUrl.getFile() + "'");
24: } else {
25: System.out.println("/nClass '" + className +
26: "' not found in /n'" +
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: }

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

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


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 从江县| 安多县| 永修县| 襄樊市| 上虞市| 茌平县| 忻州市| 永年县| 读书| 大安市| 吉水县| 阳江市| 杨浦区| 中方县| 曲周县| 陇南市| 缙云县| 新蔡县| 华亭县| 留坝县| 南溪县| 中牟县| 涿鹿县| 吉林省| 沙洋县| 兴山县| 张家界市| 许昌县| 三穗县| 嘉兴市| 宜昌市| 永安市| 福鼎市| 阿巴嘎旗| 甘洛县| 临汾市| 民乐县| 团风县| 扶绥县| 马尔康县| 玉溪市|