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 Menu
→ Project Structure
→ Project
,将Project Language Level
更改为8.0 - Lambdas, type annotations etc.
您还应该在Source选项卡(Modules部分)上更改源代码语言级别。
对于intellij 13,只需将项目语言级别本身更改为8.0
,然后进行导航。
File | | ---------Project Structure -> Project tab | |________Project language level
模块lang级别
当没有用于java compiler
maven插件时,我还必须更新Modules lang level
。
File | | ---------Project Structure -> Modules tab | |________ language level
但是如果已经有一个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个答案相同):项目结构设置
-
文件>项目结构>在项目设置下,进入项目>将项目SDK设置为1.8(版本为65或更高,最新为112),并将项目语言级别设置为8。
-
文件>项目结构>在平台设置下,转到项目>确保您的JDK主path设置为1.8(版本为65或更高,最新为112)。
如果以上操作不起作用,请检查编译器的目标字节码版本 ,然后转到可能的原因#2。
可能的原因#2:编译器
- 文件>设置>构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,键入注释等”。 并自动解决。