簡體   English   中英

使用 getResource() 加載 class 會給出不同的結果

[英]loading class with getResource() gives different results

我無法理解Class.getResource()ClassLoader.getResource()方法的工作原理。 我寫了這個:

public class Prova {
    
    public static void main(String[] args) {
        System.out.println(Prova.class.getResource("/java/lang/String.class"));
        System.out.println(String.class.getResource("/java/lang/String.class"));
        System.out.println(Prova.class.getClassLoader().getResource("/java/lang/String.class"));
    }
}

這是 output:

jar:file:/C:/Program%20Files/Java/jre1.8.0_301/lib/rt.jar!/java/lang/String.class
jar:file:/C:/Program%20Files/Java/jre1.8.0_301/lib/rt.jar!/java/lang/String.class
null

那么,為什么是第三個 null? 我希望得到與以前相同的結果。

請注意,這是一個簡單的案例。 在網絡服務器中,我注意到了更多奇怪的情況; null出現在更多情況下。

Class.getResource 需要一個相對於其 package 子目錄的路徑。 絕對(=來自頂級目錄)路徑以/開頭。

ClassLoader 只知道不允許以/開頭的絕對路徑。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM