Java "лямбда-выражения не поддерживаются на этом уровне языка"

Я тестировал некоторые новые функции Java 8 и копировал этот пример в свою IDE (Eclipse изначально, а затем IntelliJ), как показано здесь: http://docs.oracle.com/javase/tutorial/java/javaOO/examples/RosterTest.java

Eclipse не предлагал никакой поддержки для лямбда-выражений, а IntelliJ сообщал об ошибке "Лямбда-выражения не поддерживались на этом уровне языка". Я хотел бы знать, если это проблема с моей установкой, кодом или поддержкой.

Ответ 1

В IntelliJ IDEA:

В File Menu → " Project Structure → " Project измените Project Language Level на 8.0 - Lambdas, type annotations etc.

Для Android 3. 0+ Перейти к FileProject StructureModuleapp → установить Source Compatibility и Target Compatibility на 1.8

Ответ 2

Вы также должны изменить исходный код Language Level на вкладке "Источник" (часть "Модули" ).

Изменить уровень языка

Ответ 3

Это решение работает в Android Studio 3.0 или более поздней версии.

  1. Файл> Структура проекта> Модули> приложение> вкладка Свойства

enter image description here

Измените Source Compatibility и Target Compatibility на 1.8

  1. Изменить файл конфигурации

Вы также можете настроить его непосредственно в соответствующем файле build.gradle

android {
  ...
  // Configure only for each module that uses Java 8
  // language features (either in its source code or
  // through dependencies).
  compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_8
    targetCompatibility JavaVersion.VERSION_1_8
  }
}

Ответ 4

Для intellij 13, Просто измените сам уровень Уровень проекта на 8.0 со следующей навигацией.

File
|
|
 ---------Project Structure -> Project tab
          |
          |________Project language level

java8

Уровень lang модуля

Мне также пришлось обновить Modules lang level, когда не было плагина maven для java compiler.

File
|
|
 ---------Project Structure -> Modules tab
          |
          |________ language level

Модули lang level

Но этот Module lang level автоматически будет исправлен, если для него уже есть maven plugin,

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

После изменений все выглядит хорошо

Ответ 5

В студии Android canary build (3. +) вы можете сделать следующее:

Файл → Структура проекта → Смотри в модулях Раздел, есть имена модулей вашего класса. Нажмите на модуль, в котором вы хотите обновить версию java до версии 1.8. → Изменить "Совместимость источников" и "Целевая совместимость" с 1,8 от 1,7 или ниже. Не меняйте ничего другого. → Нажмите Применить

теперь gradle будет повторно синхронизироваться, и ваша ошибка будет удалена.

Ответ 6

Просто добавьте compileOptions в build.gradle yours app:

android {


...

  defaultConfig {
    ...
    jackOptions {
      enabled true
    }
  }
  compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_8
    targetCompatibility JavaVersion.VERSION_1_8
  }
}

Ответ 7

Для последних пользователей, использующих Android 3.0.1 и выше. Просто нажмите Alt + Enter и обновите свой уровень языка до 8.0 - Lambdas, аннотации типов и т.д.

Ответ 8

Если вы получаете не поддерживается на языке 5, проверьте это: (Для меня это было в разделе Модули)

Lanaguge Level 5 not supported

Ответ 9

Фактически, доступна поддержка Eclipse для Java 8: см. здесь и здесь.

  • Для Kepler он доступен как "патч функции" для SR2 (то есть Eclipse 4.3.2)
  • Для Luna (Eclipse 4.4) он будет в стандартном выпуске. (расписание выпуска)

Ответ 10

Для компиляции с Java 8 (lambdas и т.д.) в IntelliJ IDEA 15;

  • CTRL + ALT + SHIFT + S или структура файла/проекта

  • Открыть вкладку "Проект"

  • Установите Project SDK на совместимую версию java (1.8)

  • Установите уровень языка проекта на 8

  • Открыть вкладку "Модули"

  • Установите уровень языка 8, нажмите OK

  • CTRL + ALT + S или Файл/Настройки

  • Создание, выполнение, развертывание/компилятор/компилятор Java

  • Измените версию байт-кода Target на 1.8, нажмите OK

Ответ 11

Использование: IntelliJ IDEA 2017.1.4 Build # IU-171.4694.23

Изменение уровня языка на вкладке "Настройки проекта/Проект" ничего не делало. Вместо этого нажмите Alt + Enter и выберите "Установить уровень языка до 8 - Lambdas, введите аннотации и т.д.". и он автоматически разрешен.

Ответ 12

7.0 не поддерживает лямбда-выражения. Просто добавьте это в приложение, чтобы изменить уровень языка на 8.0:

compileOptions {
    targetCompatibility 1.8
    sourceCompatibility 1.8
}

enter image description here

Ответ 13

Как отметил Стивен С, Eclipse Kepler (4.3) поддерживает Java 8, когда патч установлен (инструкции по установке здесь)

После установки вам нужно будет указать вашим проектам использование java 8. Сначала добавьте JDK для затмения:

  • Перейдите в окно → Настройки
  • Перейти к Java → Установленные JRE
  • Добавьте стандартную виртуальную машину и укажите местоположение JRE
  • Затем перейдите в компилятор
  • Установить уровень соответствия компилятора 1.8.

Затем скажите проекту, чтобы использовать JDK 1.8:

  • Перейти к проекту → предпочтения
  • Перейти к Java Compiler
  • Включить специальные настройки проекта
  • Установить уровень соответствия компилятора 1.8.

Ответ 14

Проверьте настройки ниже:

  1. File-> Проект Structure-> Проект Tab.

    *Project SDK should be set to 8 or above.*
    
  2. File-> Проект Structure-> Модули.

    *Check that your or all modules has Language level set to 8 or above.*
    
  3. File-> Настройки (или Другое Settings-> Предпочтение новым проектам в новой версии Idea)

    *Search for Java compiler and check if Project byte code version 
    and per module byte code version is set 8 or above.*
    

Ваша проблема может попасть в любую из категорий, определенных выше.

Ответ 15

Тот же проект (Android Studio 3.3.2, gradle-4.10.1-all.zip, compileSdkVersion 28, buildToolsVersion '28.0.3') отлично работает на новой быстрой машине Windows и подчеркивает buildToolsVersion '28.0.3' Java 8 красным цветом на старой Ubuntu 18.04 ноутбук (однако проект без ошибок компилируется в Ubuntu).

Единственные две вещи, которые я изменил, чтобы заставить его перестать подчеркивать красным, были исключением incremental true и dexOptions

compileOptions {
//    incremental true
    sourceCompatibility JavaVersion.VERSION_1_8
    targetCompatibility JavaVersion.VERSION_1_8
}

//dexOptions {
//    javaMaxHeapSize "4g"
//}

в app - уровень build.gradle.

Ответ 17

Даже после применения выше определенных определенных параметров проекта на 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> 

Ответ 18

Возможная причина № 1 (так же, как первые 3 ответа на этот вопрос): Настройки структуры проекта

  • Файл > Структура проектa > В разделе "Параметры проекта" перейдите в "Проект" > "установить" Проект SDK в 1.8 (с версией 65 или выше, последняя - 112) и установите Уровень языка проекта до 8.

  • Файл > Структура проектa > В разделе "Параметры платформы" перейдите в "Проект" > убедитесь, что для вашего основного хоста JDK установлено значение 1.8 (с версией 65 или выше, последняя - 112).

Если вышеуказанное не работает, проверьте целевую версию байт-кода вашего компилятора и перейдите к разделу Возможная причина № 2.

Возможная причина № 2: Компилятор

  • Файл > Настройки > Сборка, выполнение, развертывание > В разделе "Компилятор" перейдите в Java Compiler > установите версию байтового кода проекта до версии 1.8, а также всю версию байт-кода Target > для ваших модулей. Нажмите Применить и нажмите ОК. Перезагрузите IDE IntelliJ. В данный момент в моей среде IDE было принято выражение Lambda.

С наилучшими пожеланиями:)

Ответ 19

Добавление следующего блока в файл pom для меня:

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

Ответ 20

Для меня ни один из предоставленных решений не работал.

Это должно быть вашим последним средством: - > Откройте файл .iml вашего проекта, измените LANGUAGE_LEVEL на JDK_1_8 или любую другую версию. - > Если это не помогло, вы должны сгладить "JDK" в корневом каталоге проекта и найти файл, который содержит параметр версии, и установить его в предпочтительную версию.

Ответ 21

Ctrl + Alt + Shift + S, а затем из проекта выберите уровень 1,8, читайте больше о лямбда-выражениях здесь

Ответ 22

Чтобы иметь поддержку Ecplise для лямбда-выражений:

  1. Убедитесь, что вы используете JDK 1.8 ("Окно"> "Установки"> "Установленные JRE и компилятор");
  2. Используйте аннотацию @FunctionalInterface, если вы определяете какие-либо новые функциональные интерфейсы, чтобы eclipse предложила вам рефакторинги, связанные с Lambdas (функциональными интерфейсами).

Ответ 23

Сначала проверьте версию JDK, которую вы используете, она должна быть выше, чем 1.8.

Если это так, выполните следующие действия.

Изменить уровень языка проекта и модулей в Intellij.

проект

1. File-> Project Structure-> Project-> Уровень языка проекта Измените его на 8, чтобы выражения lamba работали

2. File-> Project Structure-> Module-> Project language level Измените его на 8, чтобы выражения lamba работали

Ответ 24

этот ответ не работает для нового обновленного intelliJ... для нового intelliJ..

Перейдите в → файл → Структура проекта → Глобальные библиотеки ==>, чтобы установить версию JDK 1.8 или выше.

также Файл → Структура проекта ---> Проекты ===> установите "Руководство по языку проекта" на 8

также Файл → Структура проекта ---> Проект SDK ==> 1.8

Это должно включить лямбда-выражение для вашего проекта.