天天看點

解決 Unable to complete the scan for annotations for web app問題解決

文章目錄

  • 問題
  • 解決

問題

将war包部署在Tomcat安裝路徑的webapps下,啟動Tomcat,在logs/catalina.out 日志檔案中發現如下錯誤,web程式也沒有運作起來:

Unable to complete the scan for annotations for web application [/xxxx] due to a StackOverflowError. Possible root causes include a too low setting for -Xss and illegal cyclic inheritance dependencies.

錯誤資訊,寫的還是挺清楚的:

不能完成注解的掃描,因為棧溢出錯誤。可能的原因是 -Xss的設定太小 和 非法的循環繼承依賴。

解決

有三種解決方式:

  1. 增加單個線程堆棧的大小:

    如:-Xss4m

    缺點:在相同實體記憶體下,增加這個值就減少了生成線程的數量

  2. 在web.xml中,添加

    metadata-complete="true"

    如果項目中沒有使用任何基于java servlet的配置,通過這個配置告訴Tomcat,不用去掃描該web程式。
  3. 限制tomcat掃描的jar檔案

    修改conf/catalina.properties 檔案,找到屬性:

    tomcat.util.scan.StandardJarScanFilter.jarsToSkip

    ,在它的值後面加一個",*",這樣就不會掃描所有的jar包了。啟動更快,也不會出異常。

    注意,因為它的值很長,所用用

    \

    連接配接,一定要找到結尾處。

如果還是不能解決,根據日志,可以檢查下

非法的循環繼承依賴

的問題,檢查下項目的依賴關系。

繼續閱讀