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

标签 java eclipse spring maven spring-mvc

我正在使用 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 clean”,然后是“maven install”并重新启动服务器时,有时不会抛出异常并且应用程序运行正常。然而,大多数时候,它不起作用。

我想没有必要为注解扫描 bouncycaSTLe 依赖项。
我可以以某种方式禁用对某些 jar 的扫描吗?

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

我能做些什么来解决这个问题?

最佳答案

在我的例子中,导致循环依赖的 org.bouncycaSTLe.asn1.DEREncodableVector 类由类路径中的两个 jar 提供。

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

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

关于java - 由于 StackOverflowError,无法完成对 Web 应用程序 [/app] 注释的扫描,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17584495/

相关文章:

java - 链式调用的模拟或 stub

java - 如何在Android中设置DatePicker和TimePicker的限制

android - Android XML 编辑器和 Eclipse 的问题...难以手动编辑 XML

java - 添加源代码来构建路径?

java - 在不同的服务器中触发 2 个 spring 集成,但具有 1 个相同的文件轮询文件夹

java - 已检查与未检查异常

java - java中的条件正则表达式

eclipse - 如何在 Eclipse 中搜索资源文件? (转义字符)

java - 不可读属性异常 : Invalid property 'names' of bean class

spring - 如何减少Spring Boot发送到Azure Active Directory的标准范围授权请求