当前位置: 首页 > news >正文

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>

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

相关文章:

  • Mysql基础(四)——约束与表关系
  • 聚苯乙烯微球表面原位接枝含糖聚合物/pH响应性磁性聚苯乙烯基多孔微球制备方法
  • Curator使用手册
  • x86汇编_MUL/IMUL乘法指令_笔记52
  • CSP-J1 CSP-S1第1轮 初赛 如何拿到好成绩(60分及以上)
  • Package | 解决Could NOT find GLEW (missing: GLEW_INCLUDE_DIRS GLEW_LIBRARIES)
  • Maven的配置与安装
  • 阿里云 OSS
  • MacOS 12 Monterey根目录无法创建目录
  • 【牛客网-公司真题-前端入门篇】——百度2021校招Web前端研发工程师笔试卷(第一批)
  • 【Android控件】HorizontalScrollView的基础使用记录(滚动条自定义)
  • 盘点下常用的接口测试工具,有几个你肯定没用过
  • 成都市级科技计划项目验收公告、专精特新“小巨人”奖励申报等
  • 磁珠法RNA pull down试剂盒、蛋白质-核酸相互作用
  • GC 垃圾回收机制
  • 【css3】浏览器内核及其兼容性
  • ➹使用webpack配置多页面应用(MPA)
  • Angular2开发踩坑系列-生产环境编译
  • C# 免费离线人脸识别 2.0 Demo
  • HTTP中的ETag在移动客户端的应用
  • java8-模拟hadoop
  • JavaScript中的对象个人分享
  • quasar-framework cnodejs社区
  • React as a UI Runtime(五、列表)
  • vue-cli3搭建项目
  • vue中实现单选
  • 成为一名优秀的Developer的书单
  • 码农张的Bug人生 - 见面之礼
  • 七牛云 DV OV EV SSL 证书上线,限时折扣低至 6.75 折!
  • 如何使用 OAuth 2.0 将 LinkedIn 集成入 iOS 应用
  • 走向全栈之MongoDB的使用
  • 3月27日云栖精选夜读 | 从 “城市大脑”实践,瞭望未来城市源起 ...
  • Java数据解析之JSON
  • ### Error querying database. Cause: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException
  • #pragma once与条件编译
  • $jQuery 重写Alert样式方法
  • (Bean工厂的后处理器入门)学习Spring的第七天
  • (echarts)echarts使用时重新加载数据之前的数据存留在图上的问题
  • (实战篇)如何缓存数据
  • (学习日记)2024.03.25:UCOSIII第二十二节:系统启动流程详解
  • (原創) 如何使用ISO C++讀寫BMP圖檔? (C/C++) (Image Processing)
  • (转)我也是一只IT小小鸟
  • **登录+JWT+异常处理+拦截器+ThreadLocal-开发思想与代码实现**
  • .Mobi域名介绍
  • .net6解除文件上传限制。Multipart body length limit 16384 exceeded
  • .net对接阿里云CSB服务
  • .py文件应该怎样打开?
  • .考试倒计时43天!来提分啦!
  • :=
  • @CacheInvalidate(name = “xxx“, key = “#results.![a+b]“,multi = true)是什么意思
  • @reference注解_Dubbo配置参考手册之dubbo:reference
  • [ JavaScript ] JSON方法
  • [2021 蓝帽杯] One Pointer PHP
  • [2023-年度总结]凡是过往,皆为序章
  • [Android]创建TabBar