2011-01-24 12 views
10

यहाँ एक अपवाद है जब Maven 2.2.1 और JDK 1.6.0_23 साथ Windows Server 2003 के तहत एक कोड हाल में की जाँच की संकलित करने के लिए कोशिश कर रहा है पर हम पाते हैं है। उबंटू को एक ही मेवेन और जेडीके संस्करण के साथ चलने वाली कई मशीनों में सटीक उसी स्रोत को संकलित करने में कोई समस्या नहीं है।Maven संकलन: विफल क्रियान्वित javac

कोई लाभ नहीं हुआ विकल्प Maven विकल्प (अर्थात MAVEN_OPTS = -Xms256m -Xmx1024m) प्रदान करने की कोशिश की है।

क्या इस समस्या का कारण हो सकता है और क्या एक संभव समाधान हो सकता है? Thanx।

[INFO] Compilation failure 

Failure executing javac, but could not parse the error: 


The system is out of resources. 
Consult the following stack trace for details. 
java.lang.StackOverflowError 
    at com.sun.tools.javac.comp.Attr.visitSelect(Attr.java:1799) 
    at com.sun.tools.javac.tree.JCTree$JCFieldAccess.accept(JCTree.java:1522) 
    at com.sun.tools.javac.comp.Attr.attribTree(Attr.java:360) 
    at com.sun.tools.javac.comp.Attr.attribExpr(Attr.java:377) 
    at com.sun.tools.javac.comp.Attr.visitApply(Attr.java:1241) 
    at com.sun.tools.javac.tree.JCTree$JCMethodInvocation.accept(JCTree.java:1210) 
    at com.sun.tools.javac.comp.Attr.attribTree(Attr.java:360) 
    ... then trace repeats multiple times 
+0

'MAVEN_OPTS = -Xms256m -Xmx1024m' ढेर स्मृति –

उत्तर

12

कोशिश

MAVEN_OPTS=-Xms256m -Xmx1024m -Xss1024k

नोट: -Xss, उपलब्ध

+0

में वृद्धि होगी स्वीकारना यह एक ऐसा पहला जवाब था जो काम करता था। @ डोगबेन का उत्तर संभावित रूप से अधिक लचीला है क्योंकि यह सिस्टम से संबंधित परियोजना से संबंधित है (MAVEN_OPTS एक पर्यावरण चर है)। – 01es

+1

+1, इसने मुझे यह समझने में मदद की कि मुझे क्या लगता है http://stackoverflow.com/questions/9229020/jenkins-not-showing-maven-compiler-errors/10857174#10857174 (या कम से कम था मेरी समस्या, जैसा कि मेरे उत्तर में विस्तृत है) – haylem

7

हार्डवेयर के अनुसार सेट किया जाना चाहिए अपने कोड के किसी भी स्वत: जनरेट उदा जा रहा है डब्लूएसडीएल से? क्या आप यह निर्धारित कर सकते हैं कि कौन सी कक्षा (एस) समस्या पैदा कर रही है? ऐसा करने का एक तरीका यह होगा कि जब तक आप कक्षाओं के एक छोटे से सबसेट तक सीमित नहीं हो जाते, तब तक आपके कुछ स्रोतों को दोबारा हटाएं, दोबारा दोहराएं और दोहराएं।

आप किसी भी बड़े वर्ग या लंबे तरीकों है? यदि हां, तो आपको रिफैक्टर होना चाहिए।

ढेर आकार को बढ़ाएं। मुझे लगता है कि डिफ़ॉल्ट 512k है।

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-compiler-plugin</artifactId> 
    <version>2.3.2</version> 
    <configuration> 
    <compilerArgument>-J -Xss10M</compilerArgument> 
    </configuration> 
</plugin> 
+3

+1 कंपाइलरअर्गमेंट मेरे लिए काम नहीं करता है (किसी कारण से अवैध जावैक तर्क)। हालांकि संकलक आर्ग्यूमेंट्स (बहुवचन) किया था। एक साइड नोट के रूप में, मेवेन प्रलेखन (http://maven.apache.org/plugins/maven-compiler-plugin/compile-mojo.html#compilerArguments) बताता है कि संकलक के लिए कांटा को सत्य पर सेट करना होगा आर्ग्यूमेंट और कंपाइलर के लिए नियम इस्तेमाल किया गया। – 01es

+1

सबसे [हालिया दस्तावेज] (http://maven.apache.org/plugins/maven-compiler-plugin/compile-mojo.html) कहता है कि '' अब बहिष्कृत है और आपको ' का उपयोग करना चाहिए इसके बजाए –

+0

Maven 3.5.x में यह इस तरह सेट किया जाना चाहिए: org.apache.maven.plugins Maven-संकलक प्लगइन 3.5.1 <विन्यास> सच -J-Xss4m

2

क्या इस समस्या का कारण हो सकता है और क्या एक संभव समाधान होगा: करने के लिए संकलक विन्यास बदलें? Thanx।

  • ढेर वास्तव में बहुत छोटा है:

इसके कुछ संभावित कारण होते हैं। फिक्स - एक बड़ा ढेर आकार सेट करें।

  • आप पैथोलॉजिकल क्लास या विधि संकलित कर रहे हैं। ठीक करें - फ़ाइल को आज़माएं और पहचानें, पैथोलॉजी की पहचान करें, और इसे दोबारा दोहराएं।
  • आपने जावा कंपाइलर बग में भाग लिया है। ठीक करें - फ़ाइल को आज़माएं और पहचानें, पहचानें कि बग ट्रिगर कर रहा है, और बग को हल करने के लिए इसे दोबारा दोहराएं।
  • आपने किसी भी तरह से विंडोज मशीन पर मैवेन स्थानीय भंडार में भ्रष्ट JAR फ़ाइल प्राप्त करने में कामयाब रहे हैं। ठीक करें - भंडार मिटाएं और पुनर्निर्माण करें। (यह कलाकृतियों और प्लगइन्स का एक समूह फिर से डाउनलोड करने में संलग्न हो सकता है।)
  • 0

    मैं भी एक ही समस्या में आया हूं। इसे ठीक करने के लिए मैं क्या किया, है- मैं

    set MAVEN_OPTS=-Xms256m -Xmx1024m -Xss1024k *-XX:MaxPermSize=128m 
    

    के-

    set MAVEN_OPTS=-Xms256m -Xmx1024m -Xss1024k *-XX:MaxPermSize=384m 
    

    बजाय कंसोल में नीचे आदेश भाग गया यह प्रयास करें, यह निश्चित रूप से काम करेगा।अभी भी आप एक ही समस्या हो तो की जगह

    -XX:MaxPermSize=384m 
    

    -XX:MaxPermSize=512m 
    
    +0

    जावा में ले जाया गया 8, जो अब तक permgen का उपयोग नहीं करता है। – 01es

    0

    को नीचे टिप्पणी एक काम कर जवाब है

    set MAVEN_OPTS=-Xms256m -Xmx1024m -Xss1024k -XX:MaxPermSize=384m" 
    
    संबंधित मुद्दे