首页 > 其他 > 详细

[转载]getClass().getClassLoader()为null

时间:2020-02-22 19:10:50      阅读:77      评论:0      收藏:0      [点我收藏+]

来源:https://blog.csdn.net/danchaofan0534/article/details/70162663
这个问题曾经卡了我好久
想获取resources下的文件,之前用过this.getClass().getClassLoader().getResourceAsStream(path);可以获取到,但最近的一个工程中需要在一个静态方法中获取该文件,没有了this,我直接用了Class.class.getClassLoader().getResourceAsStream(path),结果发现返回为null。

原因:

提到这里不得不提一下jvm的类加载机制。自上而下加载,自下而上检查。

最开始是由BootStrap ClassLoader加载rt.jar下的文件,也就是java最最核心的部分;然后由Extension ClassLoader加载ext下的文件;再有App ClassLoader加载用户自己的文件。

由于BootStrap ClassLoader是用c++写的,所以在返回该ClassLoader时会返回null。显然,Class为java.lang.Class,是rt.jar中的,由BootStrap ClassLoader加载,所以返回null。

解决方案:

用自己编写的类的类名去获取ClassLoader。

[转载]getClass().getClassLoader()为null

原文:https://www.cnblogs.com/jiading/p/12346508.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!