关于 Robot.class.getClassLoader()
来源:6-7 loadClass和forName的区别
jaymie
2021-01-05
Robot.class.getClassLoader() 这个语句执行出来的结果是 null,好奇怪啊。这个真的执行了 loadClass吗?感觉没有啊
我用了另一种方式
ClassLoader contextClassLoader = Thread.currentThread().getContextClassLoader();
这里的 contextClassLoader 是 AppClassLoader
然后再用 contextClassLoader.loadClass 去加载 Robot,然后打断点进去
看下我的代码,我限制行了 getClassLoder,
然后loadClass的断点进去,发现这里 findLoadedClass是null
写回答
1回答
-
翔仔
2021-01-07
同学好,第一个问题,不是null,你可以直接打印
public class LoadDifference { public static void main(String[] args) { ClassLoader cl = Robot.class.getClassLoader(); System.out.println(cl); } }
就会发现 cl是sun.misc.Launcher$AppClassLoader@4921a90 类似这种
然后其次,你可以用调试的方式执行,在ClassLoader.class 的 loadClass 设置一个断点,就会妨碍西安,当调用Robot.class.getClassLoader()的时候,会执行loadClass的方法,再通过调试堆栈能看到调用它的地方
10
相似问题
7:45s是不是有问题?
回答 1
关于spring上下文
回答 1
关于fixedThreadPool
回答 1
关于StackOverFlowError
回答 1
getClassLoader()问题
回答 1