2015-04-10 11 views
8

डीबगिंग में एक संकलन त्रुटि को बढ़ाता है मैं इंटेलिज 'मूल्यांकन कोड फ्रैगमेंट' सुविधा के साथ लैम्ब्डा अभिव्यक्ति सहित कोड का मूल्यांकन करना चाहता हूं। लेकिन फिर, इंटेलिज ने एक त्रुटि Unable to compile for target level 1.8. Need to run IDEA on java version at least 1.8, currently running on 1.6.0_65-b14-462-11M4609IntelliJ: lambda अभिव्यक्ति का मूल्यांकन

मूल्यांकन कोड नीचे जैसा ही सरल है।

Set<Integer> set = new HashSet<>(); 
set.add(1); 
set.stream().map(v->v).collect(Collectors.toSet()); 

मेरे Intellij संस्करण 14.0.3 और official document के अनुसार, संस्करण 14 लैम्ब्डा अभिव्यक्ति मूल्यांकन का समर्थन करता है।

सुविधा कैसे उपलब्ध हो सकती है?

enter image description here

+6

इस तरह लगता है एक बग है: https://youtrack.jetbrains.com/issue/IDEA-132099 इस तथ्य के कारण है कि IntelliJ 1.6 पर चल रहा है (ऐप्पल जेडीके मुझे लगता है) लेकिन परियोजना जेडीके 1.8 का उपयोग करती है। तो समाधान इंटेलिजे जेडीके 1.8 का उपयोग करना है, लेकिन आखिरकार मैंने सुना कि मैक पर इसके साथ कुछ प्रदर्शन समस्याएं थीं। हालांकि यह पहले ही तय हो चुका है .... –

+0

बोहुस्लाव के उत्तर ने अब तक मेरे लिए काम किया है। जेडीके को बदलने के लिए, मैंने [इन निर्देशों का पालन किया] (https://intellij-support.jetbrains.com/hc/en-us/articles/206827547- चयन- the-JDK-version-the-IDE-will-run- के अंतर्गत)। मेरे मैक पर, मैंने Info.plist को बदल दिया: ' JVMVersion 1.8 *'। ठीक लगता है। डीबग मोड में अब lambdas निष्पादित कर सकते हैं। –

उत्तर

0

adrian lange और Bohuslav Burghardt से टिप्पणी एक साथ रखें, या तो नवीनतम इंटेलीजे 14.1 जो जावा 1.8 के साथ आता है के लिए नवीनीकरण, या जावा 1.8 उपयोग करने के लिए अपने वर्तमान इंटेलीजे स्विच करें। बग IDEA-132099 देखें।

जावा 1.8 करने के लिए स्विच करने के लिए:

  1. स्थापित Java 8
  2. इंटेलीजे बदलें जावा 8. देखें these instructions उपयोग करने के लिए। Project structure
+0

उत्तर पर्याप्त है यदि आपको जावा 8 में संकलित करने के लिए बस अपनी परियोजना की आवश्यकता है। लेकिन वॉचर/मूल्यांकन अभिव्यक्ति में जावा 8 वाक्यविन्यास का उपयोग करने के लिए मुझे जावा 8 को इंगित करने के लिए IDEA_JDK और IDEA_JDK_64 अपडेट करना था (यह उल्लेख किए गए ब्लॉगों में उल्लिखित है वैसे भी जवाब में)। –

0
Unable to compile for target level 1.8...Currently running on version 1.6 

मेरा अनुमान है कि अपनी परियोजना जावा का एक संस्करण है कि lambdas का समर्थन नहीं करता पर चलाया जा रहा है है। आप जावा 8 स्थापित किया है, और यह भी तो की तरह, जावा 8 उपयोग करने के लिए अपनी परियोजना स्तर बदलने के लिए सुनिश्चित करें कि सुनिश्चित करें: सूचना है कि यह स्पष्ट रूप से lambdas

उल्लेख
1

भी परिभाषित परियोजना के ऊपर के रूप में अच्छी तरह से इंटेलीजे पर विशिष्ट सेटिंग लागू करने के बाद ग्रहण के रूप में, यह अभी भी मेरे लिए असफल रहा था!

क्या मेरे लिए काम किया पोम एक्सएमएल में 1.8 सेटिंग के साथ स्रोत और लक्ष्य के साथ Maven प्लगइन के अलावा था:

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

     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-jar-plugin</artifactId> 
      <configuration> 
       <archive> 
        <manifest> 
         <addClasspath>true</addClasspath> 
         <classpathPrefix>lib/</classpathPrefix> 
         <mainClass>com.abc.sparkcore.JavaWordCount</mainClass> 
        </manifest> 
       </archive> 
      </configuration> 
     </plugin> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-dependency-plugin</artifactId> 
      <executions> 
       <execution> 
        <id>copy</id> 
        <phase>install</phase> 
        <goals> 
         <goal>copy-dependencies</goal> 
        </goals> 
        <configuration> 
         <outputDirectory>${project.build.directory}/lib</outputDirectory> 
        </configuration> 
       </execution> 
      </executions> 
     </plugin> 
    </plugins> 
</build> 
संबंधित मुद्दे