java.lang.IllegalStateException: Error processing condition 架包依赖版本冲突修复

avatar
作者
筋斗云
阅读量:0

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啥的也能达到上图效果

他的教程到这里就结束了,完全没写怎么解决,有点管杀不管埋的感觉。可能他觉得都会解决这个问题,问题是我不会啊 然后就再搜解决方案(当然还是感谢他的文档指出错误方向)

他的教程链接

java.lang.IllegalStateException: Error processing condition on org.springframework.boot.autoconfigur-CSDN博客

(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>
参照:

解决maven构建时警告:The artifact xxx has been relocated to xxx_the artifact mysql:mysql-connector-java:jar:8.0.33-CSDN博客

另外:其实最简单的是把报错的那个包地址直接注销掉(只适合不用这个功能时候用这个法子)

比如我的这个报错:

java.lang.IllegalStateException: Error processing condition on org.springframework.boot.autoconfigure.data.redis.RedisAutoConfiguration.redisTemplate

直接把后面爆出来的redis包注释掉就能启动了,如下图

希望对你有帮助

    广告一刻

    为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!