项目运行中错误信息:java.lang.IllegalStateException: Unable to complete the scan for annotations for web application [/app] 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

解决办法:

Run configuration  --> Arguments --> VM arguments -Xss4m

以上方式治标不治本,我的错误信息里面已经提示的比较明显了:cyclic inheritance dependencies

所以,这里靠谱的解决办法应该是:

找到冲突的jar包,Excluded掉其中一个就是了

如何找到冲突的jar包并Excluded掉?

1、打开工程pom文件

2、进入Dependency Hierarhcy视图

3、选择其中一个jar包,右键Excluded Maven Artifact,。。。

idea下解决办法:

Run configuration  --> Arguments --> VM arguments -Xss4m

以上方式治标不治本,我的错误信息里面已经提示的比较明显了:cyclic inheritance dependencies

所以,这里靠谱的解决办法应该是:

找到冲突的jar包,Excluded掉其中一个就是了

如何找到冲突的jar包并Excluded掉?

1、打开工程pom文件

2、左下角进入Dependency Analzer视图,可以看到confilcts和All Dependency as tree

3、选择其中一个jar包,右键Excluded Maven Artifact,。。。

重启项目即可。

通用方法:

对于Jar包冲突问题,我们开发人员经常都会有碰到,当我们使用一些jar包中的类、方法等,或者有时遇到一些日志系统的问题(参考另一篇文章Jar包冲突导致的日志问题),我们会遇到ClassNotFoundException,NoSuchFieldException,NoSuchMethodException 之类的运行时异常,从经验上我们就会判断,Jar包冲突了。解决Jar包冲突问题,每个人都有每个人的方法,这里我介绍一下我的方法,供大家参考。

处理方法

当遇到jar包冲突时,我们首先确定是哪个jar包冲突了,这个很容易,看我们调用的类或方法,是属于哪个Jar包。然后就是要找出冲突了,我这里使用命令

mvn dependency:tree -Dverbose -Dincludes=:

填写上Jar包的groupId和artifactId,可以只有一个,但是中间的冒号不要少,这样就会输出依赖树,而且是仅包含这个Jar包的依赖树,这样那些地方依赖了这个Jar包的那个版本就一目了然了。

例如,我的项目中notify-common包存在冲突,我们使用命令

mvn dependency:tree -Dverbose -Dincludes=:notify-common

得到依赖树输出

[INFO] com.taobao.wlb:bis-server:war:1.0-SNAPSHOT

[INFO] +- com.taobao.wlb:bis-core:jar:1.0-SNAPSHOT:compile

[INFO] | \- com.taobao.logistics:schedule-client:jar:1.1.1:compile

[INFO] | \- (com.taobao.notify:notify-common:jar:1.8.15:compile - omitted for conflict with 1.8.19.26)

[INFO] \- com.taobao.notify:notify-tr-client:jar:1.8.19.26:compile

[INFO] +- com.taobao.notify:notify-common:jar:1.8.19.26:compile

[INFO] \- com.taobao.notify:notify-remoting:jar:1.8.19.26:compile

[INFO] \- (com.taobao.notify:notify-common:jar:1.8.19.26:compile - omitted for duplicate)

看一下依赖树中所有的叶子节点就是所有的notify-common包,我们可以看到我们依赖的bis-core中依赖了schedule-client包,它依赖了一个notify-common包,版本是1.8.15,第四行的后面也提示了这个包同其他包有冲突

- omitted for conflict with 1.8.19.26)。而我们的系统依赖的notify-tr-client包所依赖的版本是1.8.19.26,于是我们知道是这里冲突了,在POM排除掉依赖,OK了。

说明

这里我们对我们执行的命令做一个简单的说明。

mvn dependency:tree -Dverbose -Dincludes=:

第一部分mvn dependency:tree是maven依赖的分析命令,作用是对我们的项目的依赖进行分析,并输出项目依赖树

第二部分-Dverbose的作用是添加了verbose一个环境变量,起的作用是在分析项目依赖时输出明细,这样项目中依赖的所有引用都会被输出出来,包含了所有的间接引用,会有很多很多,我们只需要我们要找的,所以就需要第三个参数了

第三部分-Dincludes=:的作用就是进行过滤,只包含我们想要的依赖的依赖时,排除掉其它不需要的,依赖树的所有叶子节点就是我们的找的依赖包。其中的groupId和artifactId可以只填写一个,为了保证准确性,一般都会填两个(填写时不包括尖括号)。

其他方法:

1、对于maven工程,我的办法是使用eclipse来解决,点开pom.xml,切换到hierarchy dependency,右上角搜索对应的包,可以清晰地看到冲突版本

2、可以使用idea,在pom.xml中右单击 选择Diagrams-》show dependencies

3、mvn dependency:tree -Dverbose > tree.log

直接输出冲突的jar文件

jar包冲突问题

这两天在启动一个新项目的时候,项目一直启动不了,报StackOverFlow; java.util.concurrent.ExecutionException: java.lang.StackOver ...

为什么项目的jar包会和tomcat的jar包冲突?

为什么项目的jar包会和tomcat的jar包冲突? 碰到这个问题,猜测tomcat启动时会将自己的lib和项目的lib在逻辑上归并为一个大的lib,但是并没有做版本区分以及去重,这样相同的包可能就有 ...

weblogic与axis2 jar包冲突

1.org.springframework.web.util.NestedServletException: Handler processing failed; nested exception i ...

sbt公布assembly解决jar包冲突 deduplicate: different file contents found in the following

一个.问题定义 近期使用sbt战斗assembly发生故障时,包,在package什么时候,发生jar包冲突/文件冲突,两个相同class来自不同jar包classpath内心冲突. 有关详细信息:我 ...

如何解决使用Gradle时出现的jar包冲突

前言 在我之前使用Gradle的博文中已经提到,Gradle对依赖的管理是比较智能的,如果有两个包依赖于相同的包,而版本不同的时候,Gradle会进行自动的选择,从而避免jar包的冲突. 也就是说,在 ...

记一次jar包冲突

题记:永远不要在同一个项目中,引用不同版本的两个jar包,否则,这可能就是一个大坑. 在做网校项目的时候,帮助中心要使用lucene,所以就引入了lucene-5.5.1的包,删掉了原先存在于项目中的 ...

重新看待Jar包冲突问题及解决方案

Jar包冲突是老生常谈的问题,几乎每一个Java程序猿都不可避免地遇到过,并且也都能想到通常的原因一般是同一个Jar包由于maven传递依赖等原因被引进了多个不同的版本而导致,可采用依赖排除.依赖管理 ...

【BUG】websphere找不到类或jar包冲突

来自:http://liuwei1578.blog.163.com/blog/static/49580364200991572642653/ Jar包冲突问题是在大型Java软件开发中经常遇到的问题, ...

随机推荐

hive 调优总结

一.join优化 做join之前对数据进行预处理,减少参加join的数据量,把数据量少的表放入内存中,制作map端的join 应该将条目少的表/子查询放在 Join 操作符的左边.原因是在 Join  ...

使用.net Stopwatch class 来分析你的代码

当我们在调试,优化我们的代码的时候,想知道某段代码的真正的执行时间,或者我们怀疑某段代码,或是某几段代码执行比较慢, 需要得到具体的某段代码的具体执行时间的时候.有一个很好用的类Stopwatch. ...

extjs 一些杂碎的技术问题

1怎样将grid 的checkedbox 勾选状态都清除 inv.getSelectionModel().clearSelections(); inv.getView().refresh(); 2怎样 ...

SQL server 2008无法修改表

长久未使用SQL server,一直都是使用Navicat来处理各种数据库,感觉使用很方便,但由于实际需要,必须要用SQL server创建新的数据库,却意外的遇到了以前从未遇到过的问题. 在建好表以 ...

JS类定义方式

// 方法1 对象直接量 var obj1 = { v1 : "", get_v1 : function() { return this.v1; }, set_v1 : funct ...

设计模式入门之装饰器模式Decorator

//装饰模式定义:动态地给一个对象加入一些额外的职责. //就添加功能来说.装饰模式比生成子类更为灵活 //这也提现了面向对象设计中的一条基本原则,即:尽量使用对象组合,而不是对象继承 //Compo ...

ArcGIS10.6了解一下

因为计算机水平不断更新,ESRI不得不重新倾力打造下一代ArcMap,叫ArcGIS Pro,现在ArcGIS Pro功能有一定地突显,但还不够强大和稳定:而ArcGIS Desktop方面没有什么大 ...

史上最全PHP正则表达式实例汇总

收集了一份php正则表达式的实例教程,真心不错,记录下. 正则表达式用于字符串处理.表单验证等场合,实用高效. 一些常用的表达式: $str = preg_replace("/(

【代码笔记】iOS-iphone开发之获取系统字体

代码: - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view. NS ...

【find】Linux中find常见用法示例

1.根据 某个名字在某个目录下进行查找 find /etc/ -name "*.conf" 在/etc/目录下 查找 后缀名为conf 的文件

axis2 jar包冲突_一个jar包冲突引起的StackOverflowError相关推荐

  1. java jar合并_多个jar包合并成一个jar包(ant)

    https://blog.csdn.net/gzl003csdn/article/details/53539133 多个jar包合并成一个jar 使用Apache的Ant是一个基于Java的生成工具. ...

  2. 将多个jar包合并为一个jar包

    将多个jar包合并为一个jar包 准备工作: 新建一个文件夹,将需要合并的jar包放到同一个文件夹中,cmd移动到jar包所在文件夹 1.解压所有jar包 在命令行输入:jar –xvf xx.jar ...

  3. maven编译jar包时打一个瘦包,依赖包和配置文件到jar包外面

    背景 打的jar包很大 很多时候我们在开发的时候,maven的依赖包非常多,导致我们最后打的一个jar包有一百多MB,需要将包上传到liunx环境耗时非常久,很多时候我们并没有改变依赖包,而只是改变我 ...

  4. python 模块 包 库_模块(包、库)

    模块的基本概念: 模块是程序,它就是一个扩展名为.py的python程序.因此对于一个.py的python文件而言,既可以把它当作程序来执行,也可以将它作为模块引入. 导入一个模块时,python解释 ...

  5. 吐槽学计算机的表情包,如何用一个表情包形容你的专业?看完再也不吐槽我的专业了…...

    俗话说 今天你流的汗水和泪 都是你当初选专业时脑子里进的水 然而自己选的专业 跪着也要读完 自己脑子进的水 一定要哭着流出去 各个专业都有各自的酸爽 那么如何用一个表情包形容自己的专业? 先来看看理工 ...

  6. java更改包名称_更改Java包名称如何改变我的系统架构

    java更改包名称 即使只是少量更改角度,也可能对您如何使用系统产生深远影响. 假设您正在用Java编写Web应用程序. 在系统中,您处理订单,客户和产品. 作为一个Web应用程序,您的类包括诸如Co ...

  7. 把函数包起来就是一个R包 - 完整开发指南

    生物信息学习的正确姿势 NGS系列文章包括NGS基础.高颜值在线绘图和分析.转录组分析 (Nature重磅综述|关于RNA-seq你想知道的全在这).ChIP-seq分析 (ChIP-seq基本分析流 ...

  8. git拉取代码如何解决冲突_「GIT SourceTree冲突」解决方案

    现在程序猿标配GIT作为代码管理,但是从SVN到GIT学习中,其中GIT的冲突是一个难点,常常会导致Push不上去,Pull不下来,很尴尬的地步,还不知道自己写的代码被覆盖没,废话不多说,直接上干货! ...

  9. java中如何改变包结构_修改jar包package目录结构操作方法

    开发中会遇到用第三方的jar包,有时候会出现不同的jar包,包名一致的情况,这就会引发运行时异常,找不到相应的jar包. 这种问题时常困扰我们很长时间.下面提出一种解决办法,例如gson.jar. 1 ...

最新文章

  1. java并发编程同步器 Semaphore、CyclicBarrier、Exchanger、CountDownLatch
  2. SCRUM的三个工件
  3. 09day ASM单实例安装部署,并在ASM上安装oracle数据库
  4. Spring框架初写
  5. 数字图像处理 第二章 图像处理基础
  6. 16位的数字高字节和低字节_显示掩盖较低和较高的16位数字半字节| 8086微处理器...
  7. java解析document_java 值Document解析xml详细介绍
  8. docker配置深度学习环境
  9. [Swift]LeetCode188. 买卖股票的最佳时机 IV | Best Time to Buy and Sell Stock IV
  10. pandas df.loc
  11. c语言初学者程序,C语言初学者必懂的100个范例程序
  12. 大数据第三季--Hbase(day6)-徐培成-专题视频课程
  13. 高通平台批量解析SN号的脚本
  14. pandas_收益率的分布
  15. 从转载阿里开源项目 Egg.js 技术文档引发的“版权纠纷”,看宽松的 MIT 许可该如何用?
  16. oracle实例由,Oracle 数据库的实例由( )组成
  17. 开源 非开源_假期有14种惊人的开源礼物
  18. 2021年中国LED驱动器(LED照明驱动器)市场趋势报告、技术动态创新及2027年市场预测
  19. 多智能体强化学习-DGN
  20. Vue百度地图标注点定位显示

热门文章

  1. 什么是功能性需求和非功能性需求
  2. pandas中的函数—— .map()
  3. 动态规划最大子段和问题
  4. 调用函数,判断各位数字立方和是否等于它本身
  5. 搭建 Verilog 仿真环境
  6. Nacos 入门教程
  7. 线性表的顺序存储结构(数据结构篇)
  8. 日常生活小技巧 -- SecureCRT上传和下载文件
  9. C语言再学习 -- 关闭/启动
  10. android settings源代码分析(1)