tomcat9啟動報錯too low setting for -Xss


在tomcat下部署war包啟動時報錯,關鍵錯誤信息如下:

Caused by: java.lang.IllegalStateException: Unable to complete the scan for annotations for web application [] 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.ASN1Boolean->org.bouncycastle.asn1.DERBoolean->org.bouncycastle.asn1.ASN1Boolean]

  1. 分析定位:

1)、從錯誤信息的紅色部分可以看出,程序中出現了循環依賴的類;

2)、tomcat在加載war前出錯;

3)、經分析是tomcat為了支持servlet3.0的特性,比如說支持@WebServlet、@WebListener等等,要支持這些特性,tomcat就得去掃描所有的jar包里面的每個類。這個異常表明在掃描jar包的時候,遞歸調用太深,導致棧溢出了,tomcat給了一個餿主意,讓你增大xss,這個還是不好,xss加大了,可用線程數就少了。

4)、程序中有多個包里存在org.bouncycastle.asn1.ASN1Boolean和org.bouncycastle.asn1.DERBoolean類,有bcprov-ext-jdk15on-1.54.jar、bcprov-jdk15on-1.54.jar 、fr-third-7.1.jar

  1. 解決辦法:

在tomcat的conf/ catalina.properties文件中排除對上述jar包的掃描,即:在conf/ catalina.properties文件中tomcat.util.scan.StandardJarScanFilter.jarsToSkip末尾增加:

bcpkix-*.jar,bcprov-*.jar,fr-*.jar


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM