maven依赖冲突导致tomcat启动失败

前两天上线一个服务,在运行tomcat的时候,发现tomcat没有能启动程序,重试一遍还是不行,于是追了一下Catalina的日志文件,发现在tomcat运行中,报了一个错误,

Caused by: java.lang.IllegalStateException: Unable to complete the scan for annotations for web application [/glory-admin] due to a StackOverflowError.

Possible root causes include a too low setting for -Xss and illegal cyclic inheritance dependencies. The class hierarchy being processed was [org.bouncycastle.asn1.ASN1EncodableVector->org.bouncycastle.asn1.DEREncodableVector->org.bouncycastle.asn1.ASN1EncodableVector]

 查询发现,是因为在这个项目中,引用了两个相同但版本不同的包,由此导致依赖出错,产生了一个生命周期异常的错误:

ASN1EncodableVector这个类,出现在bcprov*.jar这个包中,解决此问题,有两种办法:

1、第一种,在tomcat的配置文件中配置tomcat启动的时候不扫描这个jar。tomcat/conf/catalina.properties文件,添加tomcat.util.scan.DefaultJarScanner.jarsToSkip=bcprov*.jar,添加完成之后,重新启动tomcat,项目成功启动。

2、第二种,点开target 中的项目中的WEB-INF\lib包,找到引用相同的这两个jar包,然后查找一下低版本的jar包是那个依赖引入的,查询依赖引入的办法:cmd 进入项目中,执行mvn install,再执行mvn dependency:tree >  D:\maven.txt,找到依赖后,在相应的依赖中,排除此jar即可。

以bcprov*.jar为例,如果查找到该jar包的低版本为alipay.sdk引用,在alipay.sdk的引用中加入如下代码即可

// alipay.sdk   依赖引用

<dependency> 

<groupId>com.alipay.sdk</groupId>

<artifactId>alipay-sdk-java</artifactId>

<version>4.13.0.ALL</version>

//在此依赖中排除掉有冲突的bcprov  jar包

<exclusions>

      <exclusion>

      <groupId>org.bouncycastle</groupId>

      <artifactId>bcprov-jdk15on</artifactId>

      </exclusion>

</exclusions>

</dependency>

我的项目中,是使用的第一种方法解决的,如果大家还有别的方法,欢迎交流!

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值