启动tomcat报错信息如下:
Unable to complete the scan for annotations for web application [/wrs] due to a StackOverflowError . Possible root causes include a too low setting for -Xss and illegal cyclic inheritance dependencies.`
找到关键报错信息:
Caused by: java.lang.IllegalStateException: Unable to complete the scan for annotations for web application [/wrs] 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]`
分析原因:
报错原因为Java虚拟机栈溢出问题;而导致栈溢出的根本原因是由于包含(ASN1EncodableVector)jar包冲突,这种情况是有两个jar都含有上述相同的类名,且继承关系刚好相反,故造成tomcat启动的环问题。
解决办法:
-
idea中ctrl+shift+n,选择classes,输入ASN1EncodableVector
-
因为已经干掉了另一个冲突的jar包,所以这里只显示了一个结果,没删前是两个jar包。分别是bcprov-jdk16和bcprov-jdk15
3.定位到较旧的jar包(bcprov-jdk15),这里暂时用16代替,因为15已经被我删掉啦;
4.选中org.bouncycastle:bcprov-jdk15,右键,选中打开库设置(汉化过)
5.选中-删除
6.确认
7.重启tomcat,是不是就成功启动了。
tips:
删除前先确认pom文件中只引用了一个依赖,移除重复的依赖;这里我保留了jdk16的,删除了jdk15的;