我正在使用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并增加堆栈大小,但没有结果。
metadata-complete="true"
我该怎么做才能解决此问题?
在我的情况下org.bouncycastle.asn1.DEREncodableVector,导致循环依赖的类由类路径中的两个jar提供服务。
org.bouncycastle.asn1.DEREncodableVector
bcprov-jdk15on-1.47.jar 和 bcprov-jdk16-1.45.jar
bcprov-jdk15on-1.47.jar
bcprov-jdk16-1.45.jar
排除了不需要的jar(bcprov-jdk16-1.45.jar),效果很好