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

Czi*_*erz 173 java lambda intellij-idea java-8

我正在测试Java 8的一些新功能,并将示例复制到我的IDE(Eclipse最初,然后是IntelliJ),如下所示:http: //docs.oracle.com/javase/tutorial/java/javaOO/examples/RosterTest. java的

Eclipse没有为lambda表达式提供任何支持,并且IntelliJ不断报告错误"在此语言级别不支持Lambda表达式".我想知道这是我的安装,代码或支持的问题.

Abh*_*ran 295

在IntelliJ IDEA中:

File Menu→交通Project Structure→交通Project,改Project Language Level8.0 - Lambdas, type annotations etc.

  • **建议编辑注意事项**:您还可以为每个模块配置语言级别,`文件菜单→项目结构→模块`,但默认情况下它与项目语言级别相同. (65认同)
  • @Shubh:在Gradle中,添加这些行,你的代码将起作用:`android {compileOptions {sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8}}` (18认同)
  • 这个答案已经过时了.在Android 3.1.2上转到```File``` - >```Project Structure``` - >```你要支持lambdas```的模块并设置**Source Compatibility**和**Target兼容性**至**1.8** (15认同)
  • 我面临Android Studio的相同问题,并且在上面提到的IDE中都没有找到相同的设置.任何建议! (6认同)
  • **升级**到**IntelliJ 15**之后,我不得不将*Project Language Level*更改为9然后再更改为8以使其生效. (6认同)
  • 在Mac上的AS1.5.1上不存在 (3认同)
  • 在maven中,您必须明确设置为1.8语言级别.http://stackoverflow.com/questions/16723533/how-do-you-specify-the-java-compiler-version-in-a-pom-xml-file (2认同)

小智 97

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

改变语言水平

  • 你的答案应该更高或与其他答案一起 (3认同)
  • +1.模块的优先级高于项目的优先级.所以我更喜欢设置模块部分的语言级别. (2认同)

Ale*_*Lee 64

最高票数在最新的Android Studio 3.0或更高版本中不起作用,这是解决方案

  1. 文件>项目结构 在此输入图像描述

改变Source CompatibilityTarget 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
  }
}
Run Code Online (Sandbox Code Playgroud)


pra*_*upd 41

的IntelliJ 13,简单地改变项目语言水平本身8.0具有以下导航.

File
|
|
 ---------Project Structure -> Project tab
          |
          |________Project language level
Run Code Online (Sandbox Code Playgroud)

java8

模块级别

Modules lang level当没有maven插件时,我还必须更新java compiler.

File
|
|
 ---------Project Structure -> Modules tab
          |
          |________ language level
Run Code Online (Sandbox Code Playgroud)

模块级别

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>
Run Code Online (Sandbox Code Playgroud)

改变后一切看起来都不错

  • @Czipperz:这个答案有图片.我更喜欢它,因为我实际上已经看过所提到的接受的答案,但未注意到下拉列表.这个答案有图片突出显示选项的确切位置. (5认同)
  • 更改语言级别后也为模块修复了我的问题 (3认同)
  • 关于pom.xml文件的部分确实很有帮助,谢谢! (2认同)

Tar*_*run 23

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

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

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


Mor*_*zov 18

只需添加compileOptionsbuild.gradle你的应用程序:

android {


...

  defaultConfig {
    ...
    jackOptions {
      enabled true
    }
  }
  compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_8
    targetCompatibility JavaVersion.VERSION_1_8
  }
}
Run Code Online (Sandbox Code Playgroud)

  • 几周前谷歌宣布他们贬低了杰克.Java Gradle插件现在本身提供Java 8语言功能支持,从Android Studio 2.4 Preview 4开始.查看[here](https://issuetracker.google.com/issues/37126573#comment2) (2认同)
  • @nilsi ok)我会更新答案;) (2认同)

小智 9

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


Kej*_*uga 6

如果您的语言5不受支持,请检查以下内容:(对我来说,这在“ 模块”部分中)

不支持Lanaguge 5级


liv*_*ove 5

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

compileOptions {
    targetCompatibility 1.8
    sourceCompatibility 1.8
}
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明