IDEA版本管理
一、本地非maven的lib依赖的jar包冲突问题
- 代码写着写着,突然发现自己本地的IOUtils类使用close方法报错了,一开始以为是JDK版本不对,所以把所有版本调了一下,弄成一致了也没用。
- 后面,我进入到这个ctrl+左键点击进去该jar包才发现,这个包咋这么熟悉,而且这个版本怎么是JDK6的,对比人其他人没报错的版本是JDK8,是不是其它包也可能包含这个类呢,这个版本可能会更高。
- 于是我将这个包给完全屏蔽了,突然发现不报错了,commons-io.jar正好有JDK8的版本,我想了下,可能项目还需要这个包,于是我最小范围将该包屏蔽,把相同地方的屏蔽了即可。
- 如果是maven的话只需要exclude这个包版本即可。
- 以下是实践截图:
二、Maven依赖冲突
如果碰到项目启动不了的情况时,可以根据报错信息定位到大概哪个jar包冲突了,一般冲突有以下原因
- 依赖覆盖:可能前者依赖先导入,其中部分依赖覆盖了后导入的依赖中的一部分依赖,但是后者可能就正需要这个被覆盖的依赖版本才可运行,这样就导致依赖冲突
- 本体依赖有问题:可能本体依赖中有些依赖本就出了问题,比如
ribbon
,在一定版本后就不再进行更新,如果用了高版本的nacos
就需要排除该依赖并导入新依赖——loadbalancer
,否则后续编写代码可能报错- 其它原因:后续更新
示例:
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
<version>2.2.2.RELEASE</version>
<exclusions>
<exclusion>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-ribbon</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-loadbalancer</artifactId>
<version>2.2.2.RELEASE</version>
</dependency>