当前位置: 首页 > 面试题库 >

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

伯晨
2023-03-14
问题内容

我正在使用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并增加堆栈大小,但没有结果。

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


问题答案:

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

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

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



 类似资料:
  • 我正在使用STS(eclipse插件)和maven开发Spring MVC应用程序。 为了创建这个项目,我按照STS向导创建了一个新的“Spring MVC项目”。之后,我向其他项目和库添加了一些依赖项。 但是,当我现在尝试将项目部署到STS的集成vFabric服务器时,我有时会遇到一个异常: 当发出“maven clean”,然后是“maven安装”并重新启动服务器时,有时不会引发异常,并且应用

  • 我得到的错误是:无法扫描WEB-INF中的JAX-RS注释,您必须手动注册您的类/资源 我有以下maven配置:

  • 经过一些小改动后,战争就不能再部署了。以下是catalina.out的主要部分: 请注意,相同的WAR在我的本地Tomcat8.0.27上运行良好,而此问题只发生在AWS上。此外,没有以下代码: 即使在AWS上也会很好。上面的代码段需要以下依赖项: 感谢你的帮助!

  • 在一些小的变化之后,战争不能再部署了。以下是catalina.out的主要部分: 请注意,同样的WAR在我本地的Tomcat8.0.27上运行良好,这个问题只发生在AWS上。此外,在没有以下代码的情况下: 感谢你的帮助! 丹尼尔

  • 在Web App框架和基本流程跑通后,剩下的工作全部是体力活了:在Debug开发模式下完成后端所有API、前端所有页面。我们需要做的事情包括: 对URL/manage/进行拦截,检查当前用户是否是管理员身份: @interceptor('/manage/') def manage_interceptor(next): user = ctx.request.user if user

  • 在Web App框架和基本流程跑通后,剩下的工作全部是体力活了:在Debug开发模式下完成后端所有API、前端所有页面。我们需要做的事情包括: 把当前用户绑定到request上,并对URL/manage/进行拦截,检查当前用户是否是管理员身份: @asyncio.coroutine def auth_factory(app, handler): @asyncio.coroutine