it-swarm.com.ru

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

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

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

149
Czipperz

В IntelliJ IDEA:

В File MenuProject StructureProject измените Project Language Level на 8.0 - Lambdas, type annotations etc.

229
Abhilash

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

 Change Language Level

87
user2682809

Лучшие голоса не работают в последней версии 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
  }
}
40
Alen Lee

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

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

Java8

Уровень языка модуля

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

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

 Modules 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>

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

40
prayagupd

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

Файл -> Структура проекта -> Посмотрите в разделе Модули, там есть названия модулей вашего класса. Нажмите на модуль, в котором вы хотите обновить Java до версии 1.8. -> Измените «Совместимость источника» и «Целевая совместимость» на 1,8 с 1,7 или ниже. Больше ничего не меняй. -> Нажмите Применить

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

23
Tarun

Просто добавьте compileOptions в build.gradle вашего приложения:

Android {


...

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

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

10
Vivek

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

 Lanaguge Level 5 not supported

4
Kejsi Struga

Компилировать с Java 8 (лямбды и т.д.) В IntelliJ IDEA 15;

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

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

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

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

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

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

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

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

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

3
Daniel de Zwaan

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

  • Для Kepler он доступен как «патч функции» против SR2 (т.е. Eclipse 4.3.2)
  • Для Luna (Eclipse 4.4) это будет в стандартной версии. ( график выпуска )
3
Stephen C

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

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

2
Patrick Schaefer

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

compileOptions {
    targetCompatibility 1.8
    sourceCompatibility 1.8
}

 enter image description here

2
live-love

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

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

  • Перейти к окну -> Настройки
  • Перейти к Java -> Установленные JRE
  • Добавьте стандартную виртуальную машину и укажите местоположение JRE
  • Затем перейдите к компилятору
  • Установите уровень соответствия компилятора на 1,8

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

  • Перейти к проекту -> настройки
  • Перейти к компилятору Java
  • Включить настройки проекта
  • Установите уровень соответствия компилятора на 1,8
2
Gijs Overvliet

Добавление следующего блока в файл 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>
1
Radi

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

  1. Файл-> Структура проекта-> Вкладка Проект. 

    *Project SDK should be set to 8 or above.*
    
  2. Файл-> Структура проекта-> Модули.

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

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

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

1
thakurnitesh27

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

Тот же проект (Android Studio 3.3.2, gradle-4.10.1-all.Zip, compileSdkVersion 28, buildToolsVersion '28.0.3') отлично работает на новой быстрой машине Windows и подчеркивает 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.

1
isabsent

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

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

  2. Файл> Структура проекта> В разделе «Настройки платформы» выберите «Проект»> и убедитесь, что для параметра домашний путь JDK задано значение 1,8 (в версии 65 или более поздней - последняя версия - 112).

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

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

  1. Файл> Настройки> Сборка, выполнение, развертывание> В разделе «Компилятор» перейдите в раздел «Компилятор Java»> установите для Project Bytecode Version значение 1,8, а также для всех Target Bytecode Version для ваших модулей. Нажмите Применить и нажмите OK. Перезапустите вашу IntelliJ IDE. Лямбда-выражение было принято в моем IDE на этом этапе.

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

1
kuzevni

В Intellij 14 у меня сработали следующие настройки . Настройки Intellij14

1
user5760784

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

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

1
Pruthvidhar Rao Nadunooru

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

0
Toseef Zafar

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

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

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

Проект

1.Файл-> Структура проекта-> Проект-> Уровень языка проекта Измените его на 8, чтобы выражения lamba работали

2. Файл-> Структура проекта-> Модуль-> Уровень языка проекта Измените его на 8, чтобы выражения lamba работали

0
Abhishek Tiwari

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

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

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

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

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

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

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

0
Abhijit