Java“此语言级别不支持lambda表达式”

时间:2014-03-28 03:04:38

标签: java intellij-idea lambda java-8

我正在测试Java 8的一些新功能,并将示例复制到我的IDE(Eclipse最初,然后是IntelliJ),如图所示here

Eclipse没有为lambda表达式提供任何支持,并且IntelliJ不断报告错误

  

此语言级别不支持Lambda表达式

我想知道我的安装,代码或支持是否存在问题。

23 个答案:

答案 0 :(得分:241)

在IntelliJ IDEA中:

File MenuProject StructureProject,将Project Language Level更改为8.0 - Lambdas, type annotations etc.

对于Android 3.0 +,请转到FileProject StructureModuleapp,然后在“属性”标签中将Source CompatibilityTarget Compatibility设置为{{ 1}}

截图:

enter image description here

答案 1 :(得分:89)

您还应在“源”选项卡(“模块”部分)上更改源代码语言级别。

Change Language Level

答案 2 :(得分:55)

此解决方案适用于Android Studio 3.0或更高版本。

  1. 文件>项目结构>模块> app> “属性”选项卡
  2. enter image description here

    /var/www/something/check.log Source Compatibility同时更改为Target Compatibility

    1. 编辑配置文件
    2. 您也可以直接在相应的build.gradle文件中配置它

      1.8

答案 3 :(得分:41)

对于intellij 13, 只需将项目语言级别本身更改为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> 会自动修复,

{{1}}

更改后的一切看起来都不错

答案 4 :(得分:23)

在Android studio canary build(3. +)中,您可以执行以下操作:

文件 - &gt;项目结构 - &gt;查看模块部分,有类的模块名称。单击要将java升级到1.8版本的模块。 - &GT;将“源兼容性”和“目标兼容性”从1.7或更低更改为1.8。不要改变任何其他东西。 - &GT;点击应用

现在gradle将重新同步,您的错误将被删除。

答案 5 :(得分:18)

只需在build.gradle app:

中添加compileOptions即可
android {


...

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

答案 6 :(得分:9)

适用于使用Android studio 3.0.1或更高版本的最新用户。只需单击Alt + Enter并将语言级别升级到8.0 - Lambdas,键入注释等。

答案 7 :(得分:5)

如果您在语言5中不支持,请检查:( 对我来说,这是在模块部分)

Lanaguge Level 5 not supported

答案 8 :(得分:3)

7.0不支持lambda表达式。只需将其添加到您的应用程序gradle中,即可将语言级别更改为8.0:

compileOptions {
    targetCompatibility 1.8
    sourceCompatibility 1.8
}

enter image description here

答案 9 :(得分:2)

使用IntelliJ IDEA 15中的Java 8(lambdas等)进行编译;

  • CTRL + ALT + SHIFT + S或文件/项目结构

  • 打开“项目”标签

  • 将Project SDK设置为兼容的java版本(1.8)

  • 将项目语言级别设置为8

  • 打开模块标签

  • 将语言级别设置为8,单击“确定”

  • CTRL + ALT + S或文件/设置

  • 构建,执行,部署/编译器/ Java编译器

  • 将目标字节码版本更改为1.8,单击“确定”

答案 10 :(得分:2)

使用: IntelliJ IDEA 2017.1.4 Build#IU-171.4694.23

通过“项目设置”/“项目”选项卡更改语言级别没有做任何事情。而是按 Alt + 输入并选择&#34;将语言级别设置为8 - Lambdas,键入注释等。&#34;并自动解决。

答案 11 :(得分:2)

实际上,Eclipse支持Java 8:请参阅herehere

  • 对于开普勒来说,它可作为&#34;功能补丁&#34;针对SR2(即Eclipse 4.3.2)
  • 对于Luna(Eclipse 4.4),它将在标准版本中。 (release schedule

答案 12 :(得分:1)

同一项目(Android Studio 3.3.2gradle-4.10.1-all.zipcompileSdkVersion 28buildToolsVersion '28.0.3') 在新的快速Windows计算机上运行正常,并在旧的Ubuntu 18.04笔记本电脑上用红色下划线Java 8(尽管在Ubuntu上项目编译没有错误)。

我已更改为迫使其停止以红色下划线的仅有的两件事是排除了incremental truedexOptions

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

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

app-级build.gradle中。

答案 13 :(得分:1)

检查以下设置:

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

您的问题可能属于以上定义的任何类别。

答案 14 :(得分:1)

正如Stephen C所指出的,Eclipse Kepler(4.3)在安装补丁时支持Java 8(安装说明here

安装完成后,您需要告诉您的项目使用java 8.首先将JDK添加到eclipse:

  • 转到窗口 - &gt;首
  • 转到Java - &gt;已安装的JRE
  • 添加标准VM,并指向JRE的位置
  • 然后转到编译器
  • 将编译器合规性级别设置为1.8

然后告诉项目使用JDK 1.8:

  • 转到项目 - &gt;偏好
  • 转到Java Compiler
  • 启用项目特定设置
  • 将编译器合规性级别设置为1.8

答案 15 :(得分:0)

在 Android 项目的应用级 build.gradle 中添加以下几行解决了问题。

 compileOptions {
        sourceCompatibility = JavaVersion.VERSION_1_8
        targetCompatibility = JavaVersion.VERSION_1_8
    }

答案 16 :(得分:0)

对我而言,所提供的解决方案都没有效果。

这应该是你最后的选择: - &GT;打开项目的.iml文件会将LANGUAGE_LEVEL更改为JDK_1_8或您希望的任何版本。 - &GT;如果这没有帮助,你应该grep&#34; JDK&#34;在项目根目录中找到包含版本设置的文件,并将其设置为首选版本。

答案 17 :(得分:0)

可能的原因#1(与此问题的前3个答案相同):项目结构设置

  1. 档案&gt;项目结构&gt;在项目设置下,转到项目&gt;将 Project SDK 设置为1.8(版本65或更高版本,最新版本为112)并将项目语言级别设置为8。

  2. 档案&gt;项目结构&gt;在“平台设置”下,转到“项目”&gt;确保 JDK主路径设置为1.8(版本65或更高版本,最新版本为112)。

  3. 如果上述方法不起作用,请检查编译器的目标字节码版本,然后转到可能的原因#2。

    可能的原因#2:编译器

    1. 文件&gt;设置&gt;构建,执行,部署&gt;在Compiler下,转到Java Compiler&gt;将项目字节码版本设置为1.8,以及模块的所有目标字节码版本。点击应用,然后点击确定。重新启动IntelliJ IDE。此时我的IDE中接受了Lambda表达式。
    2. 祝福:)

答案 18 :(得分:0)

在intellij 14中,以下设置对我有用。 Intellij14 Settings

答案 19 :(得分:-1)

为lambda表达式支持Ecplise:

  1. 确保您使用的是JDK 1.8(Window&gt; Preferences&gt; Installed JREs and Compiler);
  2. 如果定义任何新的功能接口,请使用注释@FunctionalInterface,以便eclipse建议您重构与Lambdas相关的重构(Functional Interfaces。)

答案 20 :(得分:-1)

首先检查您使用的JDK版本,它应该高于1.8。

如果是,则继续执行以下步骤。

Intellij 中更改项目和模块的语言级别。

<强>项目

  

1.文件 - &gt;项目结构 - &gt;项目 - &gt;项目语言级别      将lamba表达式更改为8

     

2.File-&gt;项目结构 - &gt;模块 - &gt;项目语言级别      将lamba表达式更改为8

答案 21 :(得分:-1)

此答案不适用于新的更新的智能...。对于新的智能。

转到->文件->项目结构->全局库==>设置为JDK 1.8或更高版本。

还文件->项目结构--->项目===>将“项目语言手册”设置为8

还文件->项目结构--->项目sdk ==> 1.8

这应该为您的项目启用lambda表达式。

答案 22 :(得分:-1)

Ctrl + Alt + Shift + S然后从项目中选择语言级别1.8,了解有关Lambda表达式的更多信息here