【jar包冲突】确定java类的加载jar包

【jar包冲突】确定java类的加载jar包

jar包冲

java中经常遇到jar包冲突,程序启动时会提示“类找不到”或“方法找不到”,可以通过下面的方法来确认 程序启动所加载类的具体jar包,进行排查问题。

打印类所在jar包位置

@SpringBootApplication
public class DemoApplication {

    public static void main(String[] args) {
        SpringApplication.run(DemoApplication .class, args);
        
        //查询StringUtils类在哪个jar包中
        ProtectionDomain pd = StringUtils.class.getProtectionDomain();
        CodeSource cs = pd.getCodeSource();
        System.out.println("StringUtils --->" + cs.getLocation());
    }
}

打印效果:

StringUtils --->file:/F:/repository-hy/org/apache/commons/commons-lang3/3.9/commons-lang3-3.9.jar

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

java -verbose MyApp
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值