springboot项目因为需要加新功能于是引入新加包,然后写好代码启动时候就报错了
(1)引入的新依赖包
<!--redis相关 --> <dependency> <groupId>org.springframework.data</groupId> <artifactId>spring-data-redis</artifactId> <version>1.8.6.RELEASE</version> </dependency> <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>2.9.0</version> </dependency>
(2)启动报错
java.lang.IllegalStateException: Error processing condition on org.springframework.boot.autoconfigure.data.redis.RedisAutoConfiguration.redisTemplate
(3)网上搜解决方案第一个结果是说这是个架包依赖问题,可以通过idea的快捷键查看,但是他没有给出解决方案,以下是他的查看定位错误方法
原因:
jar 包 版本 冲突
解决方法:
查看冲突的 jar 包: 在 pom.xml 中 Ctrl + Alt + Shift + u
红线就代表版本冲突
其实也可以pom.xml中右键,然后Maven,然后show den啥的也能达到上图效果
他的教程到这里就结束了,完全没写怎么解决,有点管杀不管埋的感觉。可能他觉得都会解决这个问题,问题是我不会啊 然后就再搜解决方案(当然还是感谢他的文档指出错误方向)
他的教程链接
(3)解决方案
那么如何解决呢。 我们回到插件的分析页面。 还是对着冲突点击右键选择Exclude。 此时重新刷新maven,再次进入依赖分析页面,点击Refresh UI。
然后我就发现 Exclude默认是灰色不可用状态,需要安装插件
3.1装idea插件
首先我使用的idea工具,可以安装插件maven helper。
如图点击安装
然后restart重启idea 安装才会生效 如下图
然后:打开依赖分析
这时就会进入到下面这个页面,可以看到左侧列表中已经列出了一些依赖,此时你可以点击Refresh UI用来刷新。
我们拿到最新的检测结果后可以点击左边的依赖,右边框体内会展示出来冲突的情况。
举个栗子,我们选中poi,再看右边框体,显示了poi引入版本是3.10.1,通过编译可以发现easyexcel2.2.6中存在冲突。
这时我们可以对冲突内容点击鼠标右键选择跳转到源码jump to source
这时它跳转到了easyexcel的pom文件中,我们很清晰的查看到了其中依赖的版本
到这里是不是已经找到了根本问题。那么如何解决呢。我们回到插件的分析页面。还是对着冲突点击右键选择Exclude。
此时重新刷新maven,再次进入依赖分析页面,点击Refresh UI。可以看到刚才分析出来的冲突少了一个。
此时我们回到pom编辑页面,可以看到easyexcel依赖中使用了exclusions标签排除了poi依赖,所以冲突解决了。
到这里,使用插件解决冲突的方法就已经完事了。
参照整理地址:
彻底学会maven中依赖冲突解决办法(内附实战项目)_pom强制解决版本依赖冲突-CSDN博客
解决完之后又出现:
The artifact mysql:mysql-connector-java:jar:8.0.33 has been relocated to com.mysql:mysql-connector-j:jar:8.0.33
错误:意思是mysql包换位置了 需要改成最新的Maven仓库位置
只需要将mysql包换成最新的地址即可 最新地址:
<dependency>
<groupId>com.mysql</groupId>
<artifactId>mysql-connector-j</artifactId>
<version>8.0.33</version>
</dependency>
参照:
另外:其实最简单的是把报错的那个包地址直接注销掉(只适合不用这个功能时候用这个法子)
比如我的这个报错:
java.lang.IllegalStateException: Error processing condition on org.springframework.boot.autoconfigure.data.redis.RedisAutoConfiguration.redisTemplate
直接把后面爆出来的redis包注释掉就能启动了,如下图
希望对你有帮助