232

I was testing out some new features of Java 8 and copied the example into my IDE (Eclipse originally, then IntelliJ) as shown here

Eclipse offered no support whatsoever for lambda expressions, and IntelliJ kept reporting an error

Lambda expressions not supported at this language level

I would like to know if this is a problem with my install, the code, or support.

Asad Ali Choudhry
5,3014 gold badges35 silver badges37 bronze badges
asked Mar 28, 2014 at 3:04
8
  • 3
    It's an IDE issue. You have to change your compiler compliance. Commented Mar 28, 2014 at 3:06
  • 6
    In IDEA, select File -> Project structure; you'll have the option to change the language level Commented Mar 28, 2014 at 3:06
  • 1
    @Czipperz: On SO don't annotate the title with "Solved", mark the best answers as "Accepted" by clicking the tick. That rewards the answerer and shows the question has an answer which resolves the problem. If no answer gives the right resolution, you are free to post a self-answer and then mark it accepted (after a waiting period). Commented Mar 28, 2014 at 3:23
  • possible duplicate of How do I use Java 8 features in Eclipse Luna? Commented Mar 28, 2014 at 7:57
  • @LawrenceDol I annotated it like that because they didn't post it as an answer, but as a comment. Commented Mar 28, 2014 at 20:36

25 Answers 25

401

In IntelliJ IDEA:

In File MenuProject StructureProject, change Project Language Level to 8.0 - Lambdas, type annotations etc.

For Android 3.0+ Go FileProject StructureModuleapp and In Properties Tab set Source Compatibility and Target Compatibility to 1.8 (Java 8)

Screenshot:

enter image description here

Asad Ali Choudhry
5,3014 gold badges35 silver badges37 bronze badges
answered Mar 28, 2014 at 5:05
Sign up to request clarification or add additional context in comments.

11 Comments

Note from proposed edit: You can also configure language level for every module, File Menu → Project Structure → Modules, but by default it will the same as Project language level.
I'm facing same issue for Android Studio and neither found same settings in IDE you mention above. Any suggestion !
@Shubh: In Gradle, add these lines, your code will work: android { compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 } }
After upgrading to IntelliJ 15, I had to change the Project Language Level up to 9 and then back to 8 for that to take effect.
This answer is outdated. On Android 3.1.2 go to File -> Project Structure -> Module you want to support lambdas and set Source Compatibility and Target Compatibility to 1.8
|
107

You should change source code Language Level also on the Source tab (Modules part).

Change Language Level

Jordi Castilla
27.1k8 gold badges73 silver badges113 bronze badges
answered May 29, 2015 at 6:12

6 Comments

your answer should be higher or together with other answers
+1. The priority of modules is higher than the project's. So I prefer setting the language level of modules part.
This doesn't include the module which IntelliJ also requires. Not crazy about this side of IntelliJ, too many places to check the same thing.
Awesome. Thank you so much. This saved my day. I was struggling with the error not sure what needs to be done to enable the lambda expressions.
I was running a spring boot ap, and not sure what went wrong after I started using lambda expressions, I changed the project settings, but after following this modules setting, It worked fine.
|
81

This solution works in Android Studio 3.0 or later.

  1. File> Project Structure> Modules> app> Properties tab

enter image description here

Change both of Source Compatibility and Target Compatibility to 1.8

  1. Edit config file

You can also configure it directly in the corresponding build.gradle file

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
 }
}
Hasan El-Hefnawy
1,6271 gold badge19 silver badges24 bronze badges
answered Feb 28, 2018 at 7:55

Comments

45

For intellij 13, Simply change the Project language level itself to 8.0 with following navigation.

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

java8

Module lang level

I also had to update Modules lang level when there was no maven plugin for java compiler.

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

Modules lang level

But this Module lang level would automatically be fixed if there's already a maven plugin for it,

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

After changes everything looks good

answered Mar 28, 2015 at 23:05

4 Comments

@Czipperz: This answer has pictures. I prefer it, because I had actually already looked at the spot the accepted answer mentioned but failed to notice the dropdown. This answer has pictures highlighting the exact spot where the option is.
the part about pom.xml file is really helpful, thanks!
After changing language level also for module fixed my problem
This did the trick for me, i.e. the language level.
24

In Android studio canary build(3.+), you can do the following:

File -> Project Structure -> Look in Modules Section, there are names of modules of your class. Click on the module in which you want to upgrade java to 1.8 version. -> Change "Source Compatibility" and "Target Compatibility" to 1.8 from 1.7 or lower. Do not change anything else. -> Click Apply

now gradle will re-sync and your error will be removed.

answered Nov 6, 2017 at 9:12

Comments

20

Just add compileOptions in build.gradle yours app:

android {
...
 defaultConfig {
 ...
 jackOptions {
 enabled true
 }
 }
 compileOptions {
 sourceCompatibility JavaVersion.VERSION_1_8
 targetCompatibility JavaVersion.VERSION_1_8
 }
}
answered Dec 30, 2016 at 12:41

1 Comment

Google announced that they deprecating Jack a few weeks ago. Java 8 language features support is now natively provided by the Android Gradle plugin, starting with Android Studio 2.4 Preview 4. Look here
10

For latest users using Android studio 3.0.1 or above. Simply click Alt + Enter and upgrade your language level to 8.0 - Lambdas, type annotations etc.

answered Dec 16, 2017 at 9:44

1 Comment

easy and better than others
7

If you are getting Not supported at Language 5, check this: ( For me it was in the Modules section)

Lanaguge Level 5 not supported

answered May 17, 2018 at 18:36

Comments

5

7.0 does not support lambda expressions. Just add this to your app gradle to change your language level to 8.0:

compileOptions {
 targetCompatibility 1.8
 sourceCompatibility 1.8
}

enter image description here

answered Jan 30, 2019 at 15:37

Comments

3

To compile with Java 8 (lambdas etc) in IntelliJ IDEA 15;

  • CTRL + ALT + SHIFT + S or File / Project Structure

  • Open Project tab

  • Set Project SDK to compatible java version (1.8)

  • Set Project language level to 8

  • Open Modules tab

  • Set Language level to 8, click OK

  • CTRL + ALT + S or File / Settings

  • Build, Execution, Deployment / Compiler / Java Compiler

  • Change Target bytecode version to 1.8, click OK

answered Jan 7, 2016 at 0:15

Comments

2

Actually, Eclipse support for Java 8 is available: see here and here.

  • For Kepler, it is available as a "feature patch" against SR2 (i.e. Eclipse 4.3.2)
  • For Luna (Eclipse 4.4) it will be in the standard release. (release schedule)
answered Mar 28, 2014 at 3:21

Comments

2

Using: IntelliJ IDEA 2017年1月4日 Build #IU-171.4694.23

Changing the language level via the Project Settings / Project tab didn't do anything. Instead hitting Alt + Enter and selecting "Set language level to 8 - Lambdas, type annotations etc." and it resolved automatically.

answered Aug 22, 2017 at 15:20

Comments

2

Check below settings:

  1. File->Project Structure->Project Tab.

    *Project SDK should be set to 8 or above.*
    
  2. File->Project Structure->Modules.

    *Check that your or all modules has Language level set to 8 or above.*
    
  3. File->Settings(or Other Settings->Preference for new projects in newer Idea version)

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

You problem may fall into any one of the category defined above.

answered Nov 2, 2018 at 17:17

Comments

1

As Stephen C pointed out, Eclipse Kepler (4.3) has Java 8 support when the patch is installed (installation instructions here)

Once installed, you’ll need to tell your projects to use java 8. First add the JDK to eclipse:

  • Go to Window -> Preferences
  • Go to Java -> Installed JREs
  • Add Standard VM, and point to the location of the JRE
  • Then go to Compiler
  • Set Compiler compliance level to 1.8

Then tell the project to use JDK 1.8:

  • Go to Project -> preferences
  • Go to Java Compiler
  • Enable project specific settings
  • Set Compiler compliance level to 1.8
answered Mar 28, 2014 at 7:54

Comments

1

The same project (Android Studio 3.3.2, gradle-4.10.1-all.zip, compileSdkVersion 28, buildToolsVersion '28.0.3') works fine on the new fast Windows machine and underline Java 8 stuff by red color on the old Ubuntu 18.04 laptop (however project is compiling without errors on Ubuntu).

The only two things I have changed to force it to stop underlining by red were excluding of incremental true and dexOptions

compileOptions {
// incremental true
 sourceCompatibility JavaVersion.VERSION_1_8
 targetCompatibility JavaVersion.VERSION_1_8
}
//dexOptions {
// javaMaxHeapSize "4g"
//}

in the app- level build.gradle.

answered Apr 2, 2019 at 5:59

Comments

0

In intellij 14, following settings worked for me. Intellij14 Settings

Manjunath Ballur
6,3414 gold badges40 silver badges51 bronze badges
answered Jan 8, 2016 at 3:54

Comments

0

Even after applying above defined project specific settings on IntelliJ as well as Eclipse, it was still failing for me !

what worked for me was addition of maven plugin with source and target with 1.8 setting in 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> 
answered Aug 15, 2016 at 20:06

Comments

0

Possible Cause #1 (same as the first 3 answers for this question): Project Structure Settings

  1. File> Project Structure> Under Project Settings, go to Project> set Project SDK to 1.8 (with version 65 or above, latest is 112) and set Project Language Level to 8.

  2. File> Project Structure> Under Platform Settings, go to Project> ensure that your JDK home path is set to 1.8 (with version 65 or above, latest is 112).

If the above does not work, check the target bytecode version of your compiler and move on to Possible Cause #2.

Possible Cause #2: Compiler

  1. File> Settings> Build, Execution, Deployment> Under Compiler, go to Java Compiler> set your Project Bytecode Version to 1.8, as well as all the Target Bytecode Version for your modules. Click Apply and hit OK. Restart your IntelliJ IDE. Lambda expression was accepted in my IDE at this point.

Best wishes :)

answered Nov 5, 2016 at 23:47

2 Comments

This was almost three years ago.
This is for people using google to check for already solved problems. People who work in the industry knows this.
0

For me none of the solutions provided worked.

This should be your last resort: -> Open .iml file of your project change the LANGUAGE_LEVEL to JDK_1_8 or whatever version you wish. -> If this didn't help, you should grep "JDK" in your project root directory and find the file which contains version setting and set it to your preferred version.

answered Nov 20, 2017 at 0:24

Comments

0

Adding below lines in app level build.gradle in Android project solved issue.

 compileOptions {
 sourceCompatibility = JavaVersion.VERSION_1_8
 targetCompatibility = JavaVersion.VERSION_1_8
 }
answered Feb 3, 2021 at 13:25

Comments

0

File > Project Structure > Modules > Source tab> Change Language level to 8 enter image description here

answered Oct 26, 2022 at 8:13

Comments

-1

Ctrl + Alt + Shift + S and then from project select the language level 1.8, read more about Lambda Expressions here

answered Sep 18, 2016 at 11:04

Comments

-1

To have support of Ecplise for lambda expressions :

  1. Make sure you are using JDK 1.8 (Window> Preferences> Installed JREs and Compiler );
  2. Use the annotation @FunctionalInterface if you define any new functional interfaces so that eclipse will suggest you refactorings related to Lambdas ( Functional Interfaces. )
answered May 7, 2018 at 19:15

Comments

-1

First check the version of JDK you are using, it should higher than 1.8.

If it is then proceed to do below steps.

Change Language level of Project and modules in Intellij.

Project

1.File->Project Structure->Project->Project language level Change it to 8 for lamba expressions to work

2.File->Project Structure->Module->Project language level Change it to 8 for lamba expressions to work

Roshna Omer
7251 gold badge13 silver badges21 bronze badges
answered May 24, 2018 at 5:45

Comments

-1

this answers not working for new updated intelliJ... for new intelliJ..

Go to --> file --> Project Structure --> Global Libraries ==> set to JDK 1.8 or higher version.

also File --> project Structure ---> projects ===> set "project language manual" to 8

also File --> project Structure ---> project sdk ==> 1.8

This should enable lambda expression for your project.

answered Feb 14, 2019 at 17:38

Comments

Your Answer

Draft saved
Draft discarded

Sign up or log in

Sign up using Google
Sign up using Email and Password

Post as a guest

Required, but never shown

Post as a guest

Required, but never shown

By clicking "Post Your Answer", you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.