您如何确定从哪个类(或可能是资源)加载?
我正在尝试确切地从哪里加载一个类。有谁知道你能否找到以下内容:
答案 0 :(得分:5)
类Class
有一个实例方法getClassLoader()
,它返回对加载了它所代表的类的类加载器的引用。请注意,这可以返回null
。请参阅here。
所以,如果您想知道哪个类加载器加载String
(仅作为示例),您可以这样做:
ClassLoader loader = String.class.getClassLoader();
或:
ClassLoader loader = "I'm a String".getClass().getClassLoader();
答案 1 :(得分:2)
例如,您可以通过调用MyClass.class.getResource(“MyClass.class”)来获取URL。
答案 2 :(得分:2)
对于第一类解决方案是MyClass.class.getProtectionDomain().getCodeSource().getLocation()
。 (实际上,可能有null
ProtectionDomain
或者可能没有CodeSource
。我也会抛出SecurityException
。
答案 3 :(得分:1)
我想你会得到答案:
http://www.jugpadova.it/articles/2005/11/13/from-which-jar-a-class-was-loaded
http://www.techtalkz.com/java/102114-how-find-jar-file-ava-class-all-successorshad-been-loaded.html
答案 4 :(得分:0)
我会使用-verbose:class
命令行选项,将输出保存到文本文件,然后使用grep(或DOS查找,如果你是Windows)来查看有关如何加载该类的详细信息。
答案 5 :(得分:0)
如果你有一个类的实例 insta.getClass()。getClassLoader()。getName() - >这是加载类的类加载器
insta.getClass()。getProtectionDomain()。getCodeSource()。getLocation() - 该类是从
加载的