![](/img/trans.png)
[英]Java loading resources Class.class.getResource vs <classname>.class.getResource
[英]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.