Maven 引入的两个jar导致版本冲突的问题

tandy 2018-10-16 04:24:13
我使用 Maven 引入两个 jar 分别为 shiro 和 mybatis 使用 redis 作为缓存的支持,以下为引入信息:

<!-- shiro 使用 redis 作为缓存 -->
<dependency>
<groupId>org.crazycake</groupId>
<artifactId>shiro-redis</artifactId>
<version>3.1.0</version>
</dependency>

<!-- mybatis 使用 redis 作为缓存 -->
<dependency>
<groupId>org.mybatis.caches</groupId>
<artifactId>mybatis-redis</artifactId>
<version>1.0.0-beta2</version>
</dependency>

以上引入的两个 jar 都引入了 jedis 作为组件:
<!-- https://mvnrepository.com/artifact/redis.clients/jedis -->
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>2.9.0</version>
</dependency>


其中 shiro 使用的 jedis 版本为2.9.0 ,mybatis 使用的 jedis版本为2.8.0

如果我使用 mybatis 的 jedis 版本号 则 shiro 使用的 jedis 则报错
java.lang.NoSuchMethodError
如果我使用 shiro 的 jedis 版本号 则 mybaits 使用的 jedis 报错
java.lang.NoSuchMethodError

请问该如何解决这个问题???
...全文
1346 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
tandy 2018-10-19
  • 打赏
  • 举报
回复
引用 5 楼 oliver_105397 的回复:
你可以用exclusions来排除那些冲突的包

<exclusions>
    <exclusion>
         <groupId>commons-logging</groupId>
          <artifactId>commons-logging</artifactId>
    </exclusion>
</exclusions>
这个方法使用过 还是会出现 java.lang.NoSuchMethodError 的问题 使用2楼的方法解决了 但是觉得这个方式不是很优雅。。。。
ooo-ooo 2018-10-19
  • 打赏
  • 举报
回复
你可以用exclusions来排除那些冲突的包

<exclusions>
    <exclusion>
         <groupId>commons-logging</groupId>
          <artifactId>commons-logging</artifactId>
    </exclusion>
</exclusions>
tandy 2018-10-19
  • 打赏
  • 举报
回复
tandy 2018-10-17
  • 打赏
  • 举报
回复
引用 1 楼 wodwl 的回复:
试一下: 自己创建一个类包含两个包里出现问题类的所有方法,创建的类需要与原类包名一模一样


按照你的方法问题解决了,但是总觉得这种重写的解决方式不太好。
如果将两个 jar 中的 jedis 版本统一会不会解决这个问题呢? 又该怎么做呢?
勇哥聊IT 2018-10-16
  • 打赏
  • 举报
回复
试一下: 自己创建一个类包含两个包里出现问题类的所有方法,创建的类需要与原类包名一模一样

67,512

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧