2015-04-10 7 views
8

Я хотел бы оценить код, включая выражение лямбда, с функцией Intellij 'Evaluate Code Fragment'. В таком случае Intellij вызывает ошибку. 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 (Apple JDK, я думаю), но проект использует JDK 1.8. Таким образом, решение заключается в том, чтобы IntelliJ использовал JDK 1.8, но в последнее время я слышал, что на Mac были проблемы с производительностью. Однако это, возможно, уже было исправлено .... –

+0

Ответ Богуслава работал до сих пор. Чтобы изменить JDK, я выполнил [эти инструкции] (https://intellij-support.jetbrains.com/hc/en-us/articles/206827547-Selecting-the-JDK-version-the-IDE-will-run- под). На моем Mac я изменил Info.plist следующим образом: ' JVMVersion 1.8 *'. Кажется, все в порядке. Теперь можно выполнить lambdas в режиме отладки. –

ответ

0

Собирая комментарии от adrian lange и Bohuslav Burghardt, либо обновить его до последней IntelliJ 14.1, который поставляется в комплекте с Java 1.8, или переключить текущий IntelliJ использовать Java 1.8. См. Ошибку IDEA-132099.

Для переключения на Java 1.8:

  1. Установка Java 8
  2. Изменить IntelliJ использовать Java 8. См these instructions. Project structure
+0

Ответ достаточно хорош, если вам просто нужен ваш проект для компиляции в java 8. Но для использования синтаксиса java 8 в выражении watcher/evaluation мне пришлось обновить IDEA_JDK и IDEA_JDK_64, чтобы указать на java 8 (об этом упоминается в блогах в любом случае). –

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

Я думаю, что ваш проект выполняется на версии Java, которая не поддерживает лямбды. Убедитесь, что у вас есть Java 8 установлен, а также убедитесь, чтобы изменить уровень проекта, чтобы использовать Java 8, например, так: Обратите внимание, что он явно упоминает лямбду

1

Даже после применения выше определенного проекта специфических настроек на IntelliJ, а также как Eclipse, это все еще терпело неудачу для меня!

, что работал для меня было добавление Maven плагин с исходной и целевой 1,8 настройки в POM XML:

<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> 
Смежные вопросы