2013-07-11 6 views
28

के कारण मैं एसटीएस (ग्रहण प्लगइन) और मैवेन का उपयोग कर एक स्प्रिंग एमवीसी एप्लिकेशन विकसित कर रहा हूं।वेब एप्लिकेशन के लिए एनोटेशन के लिए स्कैन को पूरा करने में असमर्थ [/ app] StackOverflowError

प्रोजेक्ट बनाने के लिए, मैंने एक नए "स्प्रिंग एमवीसी प्रोजेक्ट" के लिए एसटीएस विज़ार्ड का पालन किया। बाद में, मैंने अन्य परियोजनाओं और पुस्तकालयों में कुछ निर्भरताओं को जोड़ा।

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 द्वारा स्थापित पीछा जारी करने:

हालांकि, जब मैं अब एसटीएस की एकीकृत vFabric सर्वर से परियोजना को तैनात करने की कोशिश कर रहा हूँ, मैं कभी कभी एक अपवाद मिल "और सर्वर का पुनरारंभ, अपवाद कभी-कभी फेंक नहीं जाता है और एप्लिकेशन ठीक काम करता है। फिर भी, ज्यादातर बार, यह काम नहीं करता है।

मुझे लगता है कि एनोटेशन के लिए बाउंसीकैसल निर्भरताओं को स्कैन करने की आवश्यकता नहीं है।
क्या मैं किसी भी तरह के जारों के लिए इस स्कैनिंग को अक्षम कर सकता हूं?

मैंने पहले से ही अपने वेब.एक्सएमएल में metadata-complete="true" जोड़ने और बिना किसी परिणाम के स्टैक आकार को बढ़ाने का प्रयास किया है।

इसे ठीक करने के लिए मैं क्या कर सकता हूं?

+1

* संभावित रूट कारणों में -Xss और अवैध चक्रीय विरासत निर्भरताओं के लिए बहुत कम सेटिंग शामिल है। * मुझे लगता है कि संदेश पहले से ही आपको जवाब देता है। –

+0

जैसा कि कहा गया है: मैंने पहले ही स्टैक आकार में वृद्धि की है। और मैं कुछ बाहरी निर्भरताओं की विरासत को बदल नहीं सकता। मुझे बस स्कैनिंग से बाहर करने के लिए कुछ रास्ता चाहिए। – Matthias

+0

जहां आपने स्टैक आकार बढ़ाया था? –

उत्तर

0

मैंने विकास उद्देश्यों के लिए टॉमकैट पर स्विच किया - अब तक, यह बिना किसी संशोधन के ठीक काम करता है।

16

आपके पास चक्रीय निर्भरता है। org.bouncycastle.asn1.ASN1EncodableVectororg.bouncycastle.asn1.DEREncodableVector पर निर्भर करता है जो org.bouncycastle.asn1.ASN1EncodableVector पर वापस निर्भर करता है ...। यह एक अनंत चक्र है और इसलिए आपको StackOverflowException मिल रहा है।

यदि आपके पास ग्रहण में स्थापित मेवेन प्लगइन है, तो निर्भरता पदानुक्रम देखें और इन कक्षाओं को देखें। मैंने किसी को भी इसी तरह के मुद्दे here के साथ पाया, उसने निर्भरता पेड़ को देखकर हल किया और फिर चक्रीय निर्भरता को तोड़ने के लिए एक बहिष्करण जोड़ दिया।

+0

आपकी प्रतिक्रिया के लिए धन्यवाद। निर्भरता पेड़ उन पुस्तकालयों के लिए काफी सामान्य दिखता है (मैं किसी भी चक्रीय निर्भरता को पहचान नहीं सकता): '\ - org.apache.activemq: activemq-all: jar: 5.8.0: संकलित \ - org.apache.activemq : activemq-amqp: jar: 5.8.0: संकलित \ - org.apache.qpid: प्रोटॉन-जेएमएस: जार: 0.3.0-फ्यूज -2: संकलित \ - org.apache.qpid: प्रोटॉन: jar: 0.3 .0-फ्यूज -2: संकलन \ - org.bouncycastle: bcpkix-jdk15on: जार: 1.47: संकलन \ - org.bouncycastle: bcprov-jdk15on: जार: 1.47: compile' मैं से पुस्तकालय को छोड़कर कोशिश करना चाहिए पोम का उपयोग कर मेवेन? या केवल तैनाती से? – Matthias

+0

मुझे लगता है कि आपके पास दो 'org.bouncycastle * 'निर्भरताएं हैं। क्या आप जांच सकते हैं कि उनमें से एक दूसरे पर निर्भर करता है या नहीं? उनमें से एक को हटाने का प्रयास करें और देखें कि आपका कोड अभी भी काम करता है या नहीं। यदि उनमें से एक दूसरे पर निर्भर करता है, तो शायद यह स्वयं ही दूसरे को डाउनलोड करेगा। – g00glen00b

+0

समस्या यह है कि वे केवल अप्रत्यक्ष निर्भरता हैं, यानी।उन्हें एक आवश्यक परियोजना द्वारा आवश्यक है जिसे मैं नहीं बदल सकता। इस प्रकार, मैंने अपनी पोम फ़ाइल में इस निर्भरता की "बहिष्करण" सूची में समूह "org.bouncycastle"/artifact "bcprov-jdk16" जोड़ा। फिर भी कोई भाग्य नहीं है। – Matthias

39

मेरे मामले में org.bouncycastle.asn1.DEREncodableVector वर्ग, जो चक्रीय निर्भरता पैदा कर रहा था, कक्षा पथ में दो जारों द्वारा परोसा गया था।

bcprov-jdk15on-1.47.jar और bcprov-jdk16-1.45.jar

अपवर्जित अवांछित जार (bcprov-jdk16-1.45.jar) है और यह अच्छी तरह से काम

0

मैं एक ही मुद्दा मैं buildConfig फ़ाइल में bouncycastle पुस्तकालय के हर ट्रेस को दूर किया था। निर्भरता या बहिष्कार में कोई निशान नहीं है। बस क्रिप्टो.2.0 में प्लग जोड़ें और सब कुछ ठीक काम करता है!

1

मुझे एक ही समस्या थी और अंत में इसे ठीक किया गया। अपने पोम में जाओ और bouncycastle के लिए खोज आप एक से अधिक उन में से एक को बाहर देखना चाहिए और यह

0

भी डबल बिलाव के तहत अपने lib फ़ोल्डर की जाँच यकीन है कि डुप्लिकेट निर्भरता मौजूद नहीं है वहाँ बनाने के लिए ठीक करना चाहिए।

2

मुझे अभी इस समस्या का सामना करना पड़ा। अन्य पहले से ही इस समस्या का जवाब देते हैं। मैं कुछ और कहूंगा।

मुझे लगता है कि आप maven-shade-plugin या कुछ समानताएं हैं जो सभी निर्भरताओं को उबेर जार में पैकेजिंग करते हैं, है ना?

आप grepcode से देख सकते हैं परिभाषित करता है कि bcprov-jdk15on:1.52

public class DEREncodableVector extends ASN1EncodableVector 

जबकि bcprov-jdk14:1.38 को परिभाषित करता है DEREncodableVector

रूप ASN1EncodableVector रूप

public class ASN1EncodableVector extends DEREncodableVector 

और maven-shade-plugin साथ, यह बेतरतीब ढंग से एक वर्ग जब दो या अधिक एक ही वर्गों मौजूद चुनते हैं । और जब यह इस संयोजन को चुनता है, चक्रीय निर्भरता होती है। यदि यह अन्य संयोजन चुनता है, तो आपका आवेदन ठीक काम कर सकता है। यह आपके द्वारा वर्णित

फिर भी, अधिकांश बार, यह काम नहीं करता है।

यह एक संभाव्य घटना है।

+0

ध्यान दें कि यह स्थिति 'pdfbox-app' के आधार पर भी उत्पन्न हो सकती है जो अपने स्वयं के बाउंसी कैसल संस्करण को बंडल करती है। –

2

यह मेरे लिए हो रहा था

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

मैं उन्नत किया कि

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

और उस के लिए यह

0

यह पहले से ही निर्माण config और इसे गलती से बाहर रखा गया है, तो तय हो गई है लगता है का उपयोग करते हुए अभी भी मौजूद है, आप इमारत से पहले अपनी परियोजना की कार्यशील निर्देशिका को साफ करने का प्रयास कर सकते हैं।

maven clean 

-

grails clean 
0

मैं एक ही समस्या थी लेकिन एक अलग समाधान के साथ। मेरा संघर्ष bcprov-jdk15on-1.55.jar और tika-app-1.7.jar के साथ था। स्पष्ट रूप से टिक में उछाल वाले महल शामिल हैं, और इस मामले में उछाल वाले महल का पुराना संस्करण जो संघर्ष का कारण बनता है।

संबंधित मुद्दे