小编典典

由于StackOverflowError,无法完成对Web应用程序[/ app]的注释的扫描

spring

我正在使用STS(eclipse插件)和maven开发Spring MVC应用程序。

为了创建项目,我遵循STS向导创建了一个新的“ Spring MVC项目”。之后,我向其他项目和库添加了一些依赖项。

但是,当我现在尝试将项目部署到STS的集成vFabric服务器时,有时会出现异常:

SEVERE: ContainerBase.addChild: start: 
org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/wsa]]
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:154)
    at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:901)
    ...
Caused by: 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]
    at org.apache.catalina.startup.ContextConfig.checkHandlesTypes(ContextConfig.java:2179)
    ...

发出“ Maven清理”,然后进行“ Maven安装”并重新启动服务器时,有时不会引发异常,并且应用程序可以正常运行。但是,在大多数情况下,它不起作用。

我想没有必要扫描bouncycastle依赖项以获取注释。
我可以某种方式禁用某些jar的扫描吗?

我已经尝试添加metadata-complete="true"到我的web.xml并增加堆栈大小,但没有结果。

我该怎么做才能解决此问题?


阅读 5964

收藏
2020-04-19

共1个答案

小编典典

在我的情况下org.bouncycastle.asn1.DEREncodableVector,导致循环依赖的类由类路径中的两个jar提供服务。

bcprov-jdk15on-1.47.jarbcprov-jdk16-1.45.jar

排除了不需要的jar(bcprov-jdk16-1.45.jar),并且效果很好

2020-04-19