簡體   English   中英

這堂課來自哪里?

[英]Where did this class come from?

您將如何確定從哪個類(或可能是資源)加載?

我正在嘗試確切地從哪里加載一個類。 有誰知道你是否能找到以下內容:

  1. 該課程來自哪個Jar文件?
  2. 什么類加載器加載文件?

Class有一個實例方法getClassLoader() ,它返回對加載它所代表的類的類加載器的引用。 請注意,這可以返回null 看到這里

所以,如果你想知道哪個類加載器加載了String (就像一個例子),你可以這樣做:

ClassLoader loader = String.class.getClassLoader();

要么:

ClassLoader loader = "I'm a String".getClass().getClassLoader();

例如,您可以通過調用MyClass.class.getResource(“MyClass.class”)來獲取URL。

對於第一類解決方案是MyClass.class.getProtectionDomain().getCodeSource().getLocation() (實際上,可能有一個null ProtectionDomain或者可能沒有一個CodeSource 。我也拋出一個SecurityException

我會使用-verbose:class命令行選項,將輸出保存到文本文件,然后使用grep(或DOS查找,如果你是Windows)來查看有關如何加載該類的詳細信息。

如果你有一個類insta.getClass()的實例.getClassLoader()。getName() - >這是加載類的類加載器

insta.getClass()。getProtectionDomain()。getCodeSource()。getLocation() - 這個類是從哪里加載的

暫無
暫無

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

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