失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > 查看java类是从哪个包加载 并找出包所在路径

查看java类是从哪个包加载 并找出包所在路径

时间:2022-01-05 06:23:02

相关推荐

查看java类是从哪个包加载 并找出包所在路径

Java的类装载器使用的是优先策略,加载类的时候先找到哪个就加载哪个。有时候我们做一个系统,当类库非常庞大的时候,类可能会出现冲突,也就是类路径中存在不同版本的两个相同的类,这往往给调试带来非常大的麻烦,我们可能修改了类,但由于类加载器却使用的是另外一个未被更新的类,这个时候就会丈二和尚摸不着头脑,一度使调试过程误入歧途。

那么怎么来确定我当前所加载的类是位于哪个路径或者存在于哪个jar包当中呢?Java语言给我们的解决方案如下代码所示:

[java] view plain copy importjava.security.CodeSource; importjava.security.ProtectionDomain; mons.lang.StringUtils; /** *判断类是从哪个jar包中加载的 *@authorWinterLau */ publicclassTest{ publicstaticvoidmain(String[]args){ ProtectionDomainpd=StringUtils.class.getProtectionDomain(); CodeSourcecs=pd.getCodeSource(); System.out.println(cs.getLocation()); } }

这段代码在我的机器上运行的结果是:

file:/D:/PROJECTS/JAVA/DLOG4J_JAVAYOU/webapp/WEB-INF/lib/commons-lang-1.0.1.jar

这就是StringUtils这个类所在的jar包,一目了然。但是有一个限制经由系统类加载器所加载的类不能使用该方法来获取路径,假如你对 String类做上面的测试就会发生空指针异常,因为所得到的CodeSource为空,你可以在程序启动的时候使用-verbose来查看系统类的装载信息,使用方式有如:

java -verbose MyApp

如果觉得《查看java类是从哪个包加载 并找出包所在路径》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。