当前位置: 首页 > 知识库问答 >
问题:

由于堆栈错误,无法完成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 clean”,然后是“maven安装”并重新启动服务器时,有时不会引发异常,并且应用程序工作正常。然而,大多数时候,它不起作用。

我想没有必要扫描弹跳城堡的依赖关系来进行注释。
我可以以某种方式禁用某些jar的此扫描吗?

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

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

共有3个答案

蒲寂离
2023-03-14

我刚刚遇到了这个问题。其他人已经给出了这个问题的答案。我会说别的。

我猜你正在使用< code>maven-shade-plugin或类似的东西将所有依赖项打包到一个优步jar中,对吗?

您可以从<code>grepcode

public class DEREncodableVector extends ASN1EncodableVector

bcprov-jdk14:1.38ASN1EncodableVector定义为

public class ASN1EncodableVector extends DEREncodableVector

使用< code>maven-shade-plugin,当存在两个或更多相同的类时,它会随机选择一个类。当它选择这种组合时,就会产生循环依赖。如果它选择其他组合,您的应用程序可能会运行良好。这和你描述的相符

然而,大多数时候,它不起作用。

这是一个概率事件。

沙小白
2023-03-14

你有一个循环依赖关系。org.bouncycastle.asn1.ASN1EncodableVector 依赖于 org.bouncycastle.asn1.DEREncodableVector,它依赖于 org.bouncycastle.asn1.ASN1EncodableVector 哪个 ... .这是一个无限的循环,所以你得到了一个StackOverflowException

如果您在Eclipse中安装了Maven插件,请查看依赖层次结构并查找这些类。我在这里找到了一个有类似问题的人,他通过查看依赖树,然后添加一个排除来打破循环依赖来解决这个问题。

丁嘉
2023-03-14

在我的例子中,导致循环依赖的< code > org . bouncy castle . ASN 1 . derencodablevector 类由类路径中的两个jar提供服务。

< code > BC prov-JDK 15 on-1.47 . jar 和< code > BC prov-JDK 16-1.45 . jar

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

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

  • 使用在嵌套目录中部署带有处理程序的lambda时遇到问题。 我执行以下步骤: > 包装: sam包——模板。yaml——打包的输出模板文件。yaml--s3铲斗 创建我在下一步中使用的packaged.yaml。 部署: AWS部署模板文件 /Users/localuser/Do/learn-sam/dynamo-stream-lambda/packaged.yaml 错误 云信息/SAM模板 目

  • 问题内容: 我已经从Rich Faces 3.3升级到Rich Faces 4.2,因为Ajax不适用于IE9。现在它仍然不起作用。 收到响应后,IE会收到一个JS错误 “ SCRIPT58734:从源头上来的东西”:c00ce56e。 在尝试时 在jsf.js.html?ln = javax.faces&conversationContext = 2,第1行第21747行 我认为是因为HTTP标

  • 当我尝试在华为P9上运行我的应用程序时,我得到了一个错误 日志: 07-04 10:42:56.045:W/System.err(955):java.lang.NullPoInterException:尝试对空对象引用调用虚拟方法“int com.huawie.lcagent.client.logCollectManager.GetUserType()”07-04 10:42:56.046:W/S

  • 我编写了一个Java应用程序,它使用JNI调用自定义的本机库。这个库工作得很好,我们可以通过它来处理小数据数组。但是,较大的数据数组会导致致命错误(EXCEPTION_STACK_OVERFLOW)。应用程序的核心转储显示了违规函数_chkstk。显然,当函数中有多页局部变量时,编译器会调用_chkstk。 通过快速搜索,我找到了Oracle的网站,该网站详细描述了4.1.3堆栈溢出导致的崩溃,并

  • 我刚刚创建了一个新的模板与与reactv17包括,我安装了eslint依赖,因为我以前,这是我的package.json文件 这是我的eslintrc.json:(注意我还没有添加所有的规则) 当我运行应用程序时,由于以下错误,应用程序将无法编译: 我在以前的项目中工作过,代码中显示了eslint错误,但没有导致应用程序崩溃。有人能指出我把事情弄糟的地方吗? 谢谢