2012-11-08 20 views
11

जब मैं नेटबीन्स में अपना प्रोग्राम बना और चलाता हूं, तो यह बिना किसी समस्या के काम करता है। लेकिन इसके साथ ही pom.xml फ़ाइल के साथ जब मैं कोशिश "mvn संकलन" मैं इस त्रुटि मिलती है:मेवेन संकलन त्रुटि

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:2.0.2:compile (default-compile) on project hadoop-test: Compilation failure 
[ERROR] /home/metin/NetBeansProjects/hadoop-test/src/main/java/com/citusdata/hadoop/HadoopTest.java:[53,8] error: generics are not supported in -source 1.3 

मेरे जावा संस्करण 1.3 नहीं, यहाँ "mvn -संस्करण"

Apache Maven 3.0.4 
Maven home: /usr/share/maven 
Java version: 1.7.0_03, vendor: Oracle Corporation 
Java home: /usr/lib/jvm/java-7-openjdk-amd64/jre 
Default locale: en_US, platform encoding: UTF-8 
OS name: "linux", version: "3.2.0-27-generic", arch: "amd64", family: "unix" 

का परिणाम और है यह लाइन 53:

Token<BlockTokenIdentifier> token = locatedBlock.getBlockToken(); 
+0

क्या आप एक विशेष कंपाइलर प्लगइन निर्दिष्ट कर रहे हैं? क्या आपके पोम में कुछ और है? – bluesman

उत्तर

21

समस्या Maven2 में maven-compiler-plugin डिफ़ॉल्ट रूप से उपयोग करता है -source 1.3 और target 1.3

आप इसे करने के लिए इस जोड़कर ठीक कर सकते हैं है अपने पोम:

<plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-compiler-plugin</artifactId> 
     <configuration> 
     <compilerVersion>1.5</compilerVersion> 
     <source>1.5</source> 
     <target>1.5</target> 
     </configuration> 
    </plugin> 

यह अपने सर्वोच्च माता पिता पोम में pluginManagement अनुभाग में इस डाल करने के लिए इतना है कि अपने व्युत्पन्न poms के बारे में परवाह करने की जरूरत नहीं व्यावहारिक है इस।

+0

हां इसने मेरी समस्या हल की, लेकिन नेटबीन्स एमवीएन क्यों काम करता है? – metdos

+0

यकीन नहीं है, मैं नेटबीन उपयोगकर्ता नहीं हूं, लेकिन शायद एनबी कुछ गुणों (जैसे 'maven.compiler.source',' maven.compiler.target') जोड़ता है या मेवेन-कंपाइलर-प्लगइन का एक नया संस्करण लागू करता है जिसमें पहले से ही है डिफ़ॉल्ट के रूप में '1.5' का मान - http://maven.apache.org/plugins/maven-compiler-plugin/compile-mojo.html#source –

+1

मेरा मेवेन संस्करण 3.0.4 है। पुराने मैवेन-कंपाइलर-प्लगइन का उपयोग कैसे समाप्त होगा? – metdos

5

आपको अपने pom.xml में कुछ जानकारी जोड़नी है। कुछ ऐसा:

<plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-compiler-plugin</artifactId> 
     <version>2.3.2</version> 
     <configuration> 
      <source>1.6</source> 
      <target>1.6</target> 
     </configuration> 
    </plugin> 
1

अपनी लॉग में, मैं इस लाइन देखें:

generics are not supported in -source 1.3 

चेक स्रोत और Maven-संकलक प्लग-इन का लक्ष्य विन्यास, और 1.5 करने के लिए इसे अद्यतन करें।

0

ऐसा लगता है एक JRE करने के लिए अपने Maven जावा घर बिंदु JDK नहीं

Java home: /usr/lib/jvm/java-7-openjdk-amd64/jre 

आप एक JDK करने के लिए इसे बदलना होगा।

java -version की कोशिश करो और देखो क्या होता है

उपयोग /usr/sbin/alternatives --config java अपने जावा संस्करण बदलने के लिए।

0

ग्रहण इंडिगो में एक ही त्रुटि को ठीक करने के लिए यहां थोड़ा अलग तरीका है।

  • एक्लिप्स में अपना (मेवेन) प्रोजेक्ट खोलें।
  • pom.xml
  • का चयन करें ... Maven पर राइट क्लिक ... जोड़ें प्लगइन
  • दर्ज करें:

    - groupId: org.apache.maven.plugins 
        - artifactId: maven-compiler-plugin 
        - version: 2.3.2 
    

यह आपके pom.xml में एक नया खंड से जोड़ दिया जाएगा और संपादन के लिए एक खिड़की खोलें।

फिर आप सही जेआरई चुनने के लिए ऊपर वर्णित स्रोत और लक्ष्य xml तत्व जोड़ सकते हैं।"निर्माण" और "प्लग इन" अन्य पदों में से कुछ में अनुपस्थित के लिए अतिरिक्त टैग

<build> 
    <plugins> 
    <plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-compiler-plugin</artifactId> 
     <version>2.3.2</version> 
     <configuration> 
      <source>1.6</source> 
      <target>1.6</target> 
     </configuration> 
    </plugin> 
    </plugins> 
</build> 

नोट:

अनुभाग अपने प्रोजेक्ट में इस तरह दिखता है।

एक बार जब आप फ़ाइल को सहेज लेते हैं, तो ग्रहण आपको सूचित करेगा कि आपका पोम आपकी परियोजना के साथ सिंक हो गया है।

फिर आप सही परियोजना क्लिक कर सकते हैं ... चुनें Maven..update परियोजना

मेरे लिए एक महत्वपूर्ण अंतर्दृष्टि है कि Maven स्वचालित रूप से ग्रहण में निर्माण पथ को फिर से सेट हो जाएगा था। जिसे आप प्रोजेक्ट द्वारा सत्यापित कर सकते हैं ... पथ बनाएं .. कॉन्फ़िगर करें पथ बनाएं ... पुस्तकालय।

तो संक्षेप में इसका मतलब है कि यदि आप मेवेन प्रोजेक्ट का उपयोग कर रहे हैं तो आपको एक्लिप्स में बिल्ड पथ को सीधे कॉन्फ़िगर करने के साथ गड़बड़ नहीं करनी चाहिए।

एचटीएच

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