Java“在此语言级别不支持的lambdaexpression式”

我正在testingJava 8的一些新特性,并将这个示例复制到我的IDE中(原来是Eclipse,然后是IntelliJ),如下所示: http : //docs.oracle.com/javase/tutorial/java/javaOO/examples/RosterTest。 java的

Eclipse不提供任何lambdaexpression式的支持,IntelliJ不断报告“在这个语言级别不支持Lambdaexpression式”的错误。 我想知道这是否是我的安装,代码或支持的问题。

在IntelliJ IDEA中:

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

您还应该在Source选项卡(Modules部分)上更改源代码语言级别。

更改语言级别

对于intellij 13,只需将项目语言级别本身更改为8.0 ,然后进行导航。

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

java8

模块lang级别

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

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

模块lang级别

但是如果已经有一个maven plugin的话,这个Module lang level会自动修复,

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

改变一切看起来不错

只需在build.gradle你的应用程序中添加compileOptions

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

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

文件 – >项目结构 – >查看模块部分,你的类的模块的名称。 点击您要将Java升级到1.8版本的模块。 – >从1.7或更低版​​本中将“源兼容性”和“目标兼容性”更改为1.8。 别改变别的。 – >点击应用

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

实际上,Eclipse支持Java 8是可用的:请参阅这里和这里 。

  • 对于开普勒来说,它可以作为针对SR2的“function补丁”(即Eclipse 4.3.2)
  • 对于Luna(Eclipse 4.4),它将在标准版本中发布。 ( 发布时间表 )

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

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

  • 打开项目选项卡

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

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

  • 打开模块选项卡

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

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

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

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

正如Stephen C指出的那样,Eclipse Kepler(4.3)在安装补丁程序时已经支持Java 8(安装说明)

一旦安装,你需要告诉你的项目使用Java 8.首先添加JDK到eclipse:

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

然后告诉项目使用JDK 1.8:

  • 转到项目 – >首选项
  • 转到Java编译器
  • 启用项目特定的设置
  • 将编译器合规性级别设置为1.8

在intellij 14,以下设置为我工作。 Intellij14设置

即使在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(与此问题的前3个答案相同):项目结构设置

  1. 文件>项目结构>在项目设置下,进入项目>将项目SDK设置为1.8(版本为65或更高,最新为112),并将项目语言级别设置为8。

  2. 文件>项目结构>在平台设置下,转到项目>确保您的JDK主path设置为1.8(版本为65或更高,最新为112)。

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

可能的原因#2:编译器

  1. 文件>设置>构build,执行,部署>在编译器下,转到Java编译器>设置项目字节码版本为1.8,以及模块的所有目标字节码版本 。 点击应用,然后点击确定 。 重新启动你的IntelliJ IDE。 Lambdaexpression式在我的IDE中被接受。

最好的祝愿 :)

添加下面的块到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> 

按Ctrl + Alt + Shift + S,然后从项目中select语言级别1.8, 在这里阅读更多关于Lambdaexpression式

使用:IntelliJ IDEA 2017.1.4 Build#IU-171.4694.23

通过项目设置/项目选项卡更改语言级别没有任何作用。 而是按Alt + Enter并select“将语言级别设置为8 – Lambdas,键入注释等”。 并自动解决。