maven 工具的依赖树以及解决版本包冲突问题

1、如何查看一个工程的依赖树 ?

maven工具牛B的地方在于包的依赖导入。如果需要添加一个第三方包,只要在pom文件中jar的依赖就可以。在工程的左侧目录中除了External Lib包下存在很多jar包,这些jar包有直接依赖的包,也有间接依赖的包。间接依赖就是指,假设依赖了spring-boot-starter-data-redis 这包,但是会出现其他的包,因为这个包也需要依赖其他的包。在上述包中也存在pom文件。其他的包,都被称为间接依赖。所以在maven中依赖之间不是单一的,是错综复杂的,犹如树状结构。所以称为依赖树。直接点击右侧视图,选中某个module,右键 show dependencies 会出现如下图所示的情况:

这里写图片描述

从图片中可以看出,包的父包是哪些,子包又有哪些。箭头直达的是直接依赖,其他是间接依赖。

解决冲突

在依赖树种可以如果存在依赖包的版本冲突(同一个jar包存在多个版本), 会出现红线部分。 提示存在冲突,然后右键选中某个包,可以直接对其他进行exclusion排除依赖操作 。

2、一个程序在编译的时候不会出现错误。但是在运行的时候确抛出异常:

java.lang.ClassNotFoundException
为什么会出现这个异常,应该怎么解决这个异常 ?

出现场景:

假设两个包A和B,都依赖第三方包C,但是依赖的版本不一致。其中A依赖的是Version1, B依赖的是Version2。 Version2是高版本。其中B中调用了版本2中的某个类。这个类在版本1中不存在。 编译的时候,没有异常。运行的时候,加载了版本1的包,不加载版本2的包,所以会出现ClassNotFoundException 。

解决思路:

1、首先查看依赖树,确定jar’包是否存在。如果存在。那么就排除没有jar的情况。

2、再通过依赖树查看是否存在jar包的版本冲突。 如果有冲突,那么就排除低版本。(因为一般jar包的版本升级都会向下兼容),所以直接exclusion低版本的jar包。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值