programing

StackOverflowError(스택오버플로 오류)로 인해 웹 응용 프로그램 [/app]에 대한 주석 검색을 완료할 수 없습니다.

telecom 2023. 7. 24. 22:17
반응형

StackOverflowError(스택오버플로 오류)로 인해 웹 응용 프로그램 [/app]에 대한 주석 검색을 완료할 수 없습니다.

STS(이클립스 플러그인)과 메이븐을 이용한 Spring MVC 어플리케이션을 개발하고 있습니다.

프로젝트를 만들기 위해 STS 마법사를 따라 새로운 "Spring MVC project"를 만들었습니다.그 후, 저는 다른 프로젝트와 라이브러리에 종속성을 추가했습니다.

그러나 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 종속성을 스캔할 필요가 없다고 생각합니다.
일부 병에 대해 이 스캔을 비활성화할 수 있습니까?

이미추시도다니습했를가다▁adding니▁already▁tried를 추가해 보았습니다.metadata-complete="true"내 web.xml에 저장하고 스택 크기를 늘렸습니다.

이 문제를 해결하려면 어떻게 해야 합니까?

나의 경우에는org.bouncycastle.asn1.DEREncodableVector순환 의존성을 유발하는 클래스는 클래스 경로에서 두 개의 병에 의해 제공되었습니다.

bcprov-jdk15on-1.47.jar그리고.bcprov-jdk16-1.45.jar

원치 않는 병(bcprov-jdk16-1.45.jar)을 제외하고 잘 작동했습니다.

순환 의존성이 있습니다.org.bouncycastle.asn1.ASN1EncodableVector 따라 .org.bouncycastle.asn1.DEREncodableVector은 는의하존에 합니다.org.bouncycastle.asn1.ASN1EncodableVector것은그를 얻는 이건 무한 순환이고 그래서 당신은 그것을 얻는 것입니다.StackOverflowException.

이클립스에 메이븐 플러그인이 설치되어 있는 경우 종속성 계층을 확인하고 이러한 클래스를 찾습니다.저는 여기서 비슷한 문제를 가진 사람을 찾았습니다. 그는 종속성 트리를 보고 순환 종속성을 깨기 위해 제외 항목을 추가함으로써 문제를 해결했습니다.

저는 방금 이 문제에 직면했습니다.다른 사람들은 이미 이 문제에 대한 답을 제공합니다.저는 다른 말을 할 것입니다.

당신이 사용하고 있는 것 같습니다.maven-shade-plugin아니면 모든 의존성을 우버 병에 포장하는 것과 비슷한 것, 맞죠?

다있니에서 알 수 .grepcode 그거bcprov-jdk15on:1.52정의합니다.DEREncodableVector~하듯이

public class DEREncodableVector extends ASN1EncodableVector

하는 동안에bcprov-jdk14:1.38정의합니다.ASN1EncodableVector~하듯이

public class ASN1EncodableVector extends DEREncodableVector

그리고 함께maven-shade-plugin두 개 이상의 동일한 클래스가 존재하는 경우 클래스를 무작위로 선택합니다.그리고 이 조합을 선택하면 순환 의존성이 발생합니다.다른 조합을 선택하면 응용 프로그램이 제대로 작동할 수 있습니다.은 당신이 합니다.

하지만, 대부분의 경우, 효과가 없습니다.

그것은 확률론적인 사건입니다.

저도 봄부츠 프로젝트에서 같은 문제를 겪었습니다.충돌하는 종속성을 확인하기 위해 프로젝트 디렉토리에서 다음 명령을 실행합니다.

mvn dependency:tree -Dverbose -Dincludes=org.bouncycastle

출력에서 다음과 같은 정보가 발견되었습니다.

[INFO] +- org.springframework.cloud:spring-cloud-starter-openfeign:jar:2.1.0.RC3:compile
[INFO] |  \- org.springframework.cloud:spring-cloud-starter:jar:2.1.0.RC2:compile
[INFO] |     \- org.springframework.security:spring-security-rsa:jar:1.0.7.RELEASE:compile
[INFO] |        \- org.bouncycastle:bcpkix-jdk15on:jar:1.60:compile
[INFO] |           \- org.bouncycastle:bcprov-jdk15on:jar:1.60:compile
[INFO] \- com.cybersource:cybersource-rest-client-java:jar:0.0.16:compile
[INFO]    \- com.cybersource:AuthenticationSdk:jar:0.0.8:compile
[INFO]       \- org.bouncycastle:bcprov-jdk16:jar:1.45:compile

여기서 우리는 openfeign과 cybersource-rest-client가 다른 버전의 bcprov-jdk 패키지를 사용하고 있음을 알 수 있습니다.cybersource-rest-client가 이 패키지의 업데이트된 버전을 가지고 있기 때문에, 나는 다음과 같이 pom.xml의 openfig에서 이 종속성을 제외했습니다.

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-openfeign</artifactId>
    <exclusions>
        <exclusion>
            <groupId>org.bouncycastle</groupId>
            <artifactId>bcprov-jdk15on</artifactId>
        </exclusion>
    </exclusions>
</dependency>

이것은 제가 이 문제를 해결하는 데 도움이 되었습니다.

이것은 제가 사용하는 것에 발생했습니다.

        <groupId>org.bouncycastle</groupId>
        <artifactId>bcpkix-jdk15on</artifactId>
        <version>1.54</version>

로 업그레이드했습니다.

        <groupId>org.bouncycastle</groupId>
        <artifactId>bcprov-jdk16</artifactId>
        <version>1.46</version>

그리고 그것이 그것을 고친 것 같습니다.

Tomcat 8과 jdk 1.8에 이 오류가 있습니다.

04-Apr-2018 16:35:06.358 SEVERE [localhost-startStop-1] org.apache.catalina.core.ContainerBase.addChildInternal ContainerBase.addChild: start: 
 org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/myapp]]
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:167)
    at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:752)
    at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:728)
    at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:734)
    at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:1141)
    at org.apache.catalina.startup.HostConfig$DeployDirectory.run(HostConfig.java:1875)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.IllegalStateException: Unable to complete the scan for annotations for web application [/myapp] 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:2110)
    at org.apache.catalina.startup.ContextConfig.processAnnotationsStream(ContextConfig.java:2054)
    at org.apache.catalina.startup.ContextConfig.processAnnotationsJar(ContextConfig.java:2000)
    at org.apache.catalina.startup.ContextConfig.processAnnotationsUrl(ContextConfig.java:1970)
    at org.apache.catalina.startup.ContextConfig.processAnnotations(ContextConfig.java:1923)
    at org.apache.catalina.startup.ContextConfig.webConfig(ContextConfig.java:1163)
    at org.apache.catalina.startup.ContextConfig.configureStart(ContextConfig.java:775)
    at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:299)
    at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:94)
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5105)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
    ... 10 more

04-Apr-2018 16:35:06.359 SEVERE [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Error deploying web application directory [/usr/apache-tomcat-8.5.24.Core/webapps/myapp]
 java.lang.IllegalStateException: ContainerBase.addChild: start: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/myapp]]
    at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:756)
    at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:728)
    at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:734)
    at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:1141)
    at org.apache.catalina.startup.HostConfig$DeployDirectory.run(HostConfig.java:1875)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at java.lang.Thread.run(Thread.java:745)

그리고 앱립에서 bcprov-jdk*.jar라는 이름의 두 개의 병을 발견했습니다.저는 그것들을 모두 제거하고 bcprov-jdk15on-1.52.jar를 사용합니다.이렇게 해서 저의 문제는 해결되었습니다.

저도 같은 문제가 있어서 결국 고쳤어요. 당신의 폼으로 가서 bouncycastle을 검색하세요. 그들 중 하나를 제외한 둘 이상의 것을 볼 수 있고 그것은 그것을 고칠 것입니다.

또한 당신의lib중복 종속성이 존재하지 않는지 확인하기 위해 Tomcat 아래에 폴더를 만듭니다.

buildConfig 파일에서 bouncycastle 라이브러리의 모든 흔적을 제거하는 것과 같은 문제가 있었습니다.종속성 또는 제외된 추적이 없습니다.crypto.2.0의 플러그를 추가하기만 하면 모든 것이 잘 작동합니다!

빌드 구성에서 이미 제외되어 있고 오류가 여전히 존재하는 경우 빌드하기 전에 프로젝트의 작업 디렉터리를 정리할 수 있습니다.

maven clean

-

grails clean

저는 같은 문제를 겪었지만 다른 해결책을 가지고 있었습니다.bcprov-jdk15on-1.55.jar 및 tika-app-1.7.jar와 충돌했습니다.티카에는 바운티 성이 포함되어 있으며, 이 경우 분쟁을 일으키는 오래된 바운티 성이 포함되어 있습니다.

젠킨스 작업 공간 폴더(내 프로젝트가 실행되는 곳)에서 mvn clean을 수행하고 젠킨스 빌드(이전 전쟁 파일을 삭제)를 수행하는 것이 제게 도움이 되었습니다.

언급URL : https://stackoverflow.com/questions/17584495/unable-to-complete-the-scan-for-annotations-for-web-application-app-due-to-a

반응형