我正在测试Java 8的一些新特性,并将示例复制到我的IDE(最初是Eclipse,然后是IntelliJ),如下所示
Eclipse对lambda表达式不提供任何支持,IntelliJ不断报告错误
此语言级别不支持Lambda表达式
我想知道这是否是我的安装、代码或支持的问题。
我正在测试Java 8的一些新特性,并将示例复制到我的IDE(最初是Eclipse,然后是IntelliJ),如下所示
Eclipse对lambda表达式不提供任何支持,IntelliJ不断报告错误
此语言级别不支持Lambda表达式
我想知道这是否是我的安装、代码或支持的问题。
当前回答
您还应该在source选项卡(Modules部分)上更改源代码的Language Level。
其他回答
正如Stephen C指出的,Eclipse Kepler(4.3)在安装补丁时支持Java 8(安装说明在这里)
安装完成后,您需要告诉您的项目使用java 8。首先将JDK添加到eclipse:
进入“窗口->首选项” 进入“Java ->已安装jre” 添加标准虚拟机,并指向JRE的位置 然后选择编译器 将编译器遵从级别设置为1.8
然后告诉项目使用JDK 1.8:
进入项目->首选项 转到Java编译器 启用项目特定设置 将编译器遵从级别设置为1.8
IntelliJ IDEA:
在文件菜单→项目结构→项目,将项目语言级别更改为8.0 - Lambdas,输入注释等。
Android 3.0+ Go文件→项目结构→模块→应用程序和属性选项卡设置源兼容性和目标兼容性为1.8 (Java 8)
截图:
在应用程序级别构建中添加以下行。gradle在Android项目中解决了问题。
compileOptions {
sourceCompatibility = JavaVersion.VERSION_1_8
targetCompatibility = JavaVersion.VERSION_1_8
}
同样的项目(Android Studio 3.3.2, gradle-4.10.1-all.zip, compileSdkVersion 28, buildToolsVersion '28.0.3') 在新的快速Windows机器上运行良好,在旧的Ubuntu 18.04笔记本电脑上用红色下划线标出Java 8的内容(但是项目在Ubuntu上编译没有错误)。
我只改变了两件事,迫使它停止用红色下划线是排除增量true和dexOptions
compileOptions {
// incremental true
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
//dexOptions {
// javaMaxHeapSize "4g"
//}
在应用级build.gradle中。
7.0不支持lambda表达式。只需将此添加到您的应用程序gradle,将您的语言级别更改为8.0:
compileOptions {
targetCompatibility 1.8
sourceCompatibility 1.8
}