tomcat启动报错:too low setting for -Xss and illegal cyclic inheritance dependencies

问题原因

在Linux或Mac下,启动Tomcat时会报以下错误:

文字信息如下: 

Caused by: java.lang.IllegalStateException: Unable to complete the scan for annotations for web application [/cmi] 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]
at org.apache.catalina.startup.ContextConfig.checkHandlesTypes(ContextConfig.java:2174)
at org.apache.catalina.startup.ContextConfig.processAnnotationsStream(ContextConfig.java:2112)
at org.apache.catalina.startup.ContextConfig.__processAnnotationsJar(ContextConfig.java:2058)
at org.apache.catalina.startup.ContextConfig.processAnnotationsJar(ContextConfig.java:55017)
at org.apache.catalina.startup.ContextConfig.processAnnotationsUrl(ContextConfig.java:2028)
at org.apache.catalina.startup.ContextConfig.processAnnotations(ContextConfig.java:1981)
at org.apache.catalina.startup.ContextConfig.processClasses(ContextConfig.java:1237)
at org.apache.catalina.startup.ContextConfig.webConfig(ContextConfig.java:1136)
at org.apache.catalina.startup.ContextConfig.configureStart(ContextConfig.java:768)
at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:301)
at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:123)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5034)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
... 50 more

通过上面的错误信息,第一眼看起来是因为-Xss的值设置的比较小,但是调整-Xss的参数方法是不正确的。其中 -Xss的解释如下:

-Xss:每个线程的Stack大小,“-Xss 15120” 这使得tomcat每增加一个线程(thread)就会立即消耗15M内存,而最佳值应该是128K,默认值好像是512k.

解决方案

后面看到的错误信息 org.bouncycastle.asn1.ASN1EncodableVector 是出在这个类上,

这是因为tomcat启动会去扫描jar,这个类是出现在bcprov.jar这个包。所以在tomcat的conf目录里面catalina.properties的文件中
在tomcat.util.scan.StandardJarScanFilter.jarsToSkip=里面加上bcprov
.jar过滤启动不会报错了
具体如下:

 我的Tomcat版本是8.5.35

另外网上的另一种解决方案是升级Tomcat版本。自己也试了一下。用Tomcat9.0.6 也会出现这个问题,只不过频率比较低。 

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值