此语言级别 IDEA 不支持 lambda 表达式
lambda expressions are not supported at this language level IDEA
我正在尝试创建我的第一个 fxml java 项目,并且在初始化阶段我正在尝试为 table 列设置单元格值工厂,例如
@FXML
private void initialize() {
agentId.setCellValueFactory(cellData -> cellData.getValue().getIdProperty());
.....}
这是带红色下划线的,并给出了标题中提到的错误。更改项目结构中的语言级别没有任何效果。还有什么可能是错误的原因?
UPD: 我发现安装 java 和 lambdas 是必要的,它没有包含在正式版本中。我做到了,但它没有帮助。我已经下载了 here
答案如下:我不仅要更改项目结构->项目中的语言级别,还要更改项目结构->模块中的语言级别。
我不得不做一些事情来解决这个问题。
- 文件 > 项目结构 > 项目 > 项目 SDK:将其更改为 Java 1.8.XX
- 文件 > 项目结构 > 项目 > 语言级别:SDK 8(在我的例子中,SDK 默认已经是 8)
- 文件 > 项目结构 > 模块 > 来源 > SDK 8(在我的例子中,SDK 默认已经是 8)
- 文件 > 设置 > 构建、执行、部署 > 编译器 > Java 编译器 > 项目字节码版本 > 1.8
- 文件 > 设置 > 构建、执行、部署 > 编译器 > Java 编译器 > 每模块字节码版本 > 目标字节码版本 > 1.8
这应该可以解决问题。
如果您已经完成上述操作但仍未修复,并且如果您正在设置新模块,请检查您的模块源文件夹是否已添加到父模块。我发现它是在 1.5 编译的,因为这是父模块设置(因为父模块不包含 java 源)。也将其更新为 1.8 最终摆脱了警告并从父模块中删除了模块的源文件夹。
文件 > 项目结构 > 模块(模块的父级)> 来源 > 语言级别
如果您使用的是 Android Studio 版本 3.2.1,您可以使用以下步骤更改语言级别:
- 转到项目结构
- 在模块部分,点击应用。
- 在属性选项卡中,将源兼容性更改为 1.8。
- 单击文件,Android Studio 中的左上角。
- 单击项目结构。
- 点击应用程序。
- 选择属性并将源兼容性设置为1.8。
对于 "Android Studio" 3.3 版:
- 单击 "File"("Android Studio" 中的左上角)。
- 单击 "Project structure"。
- 单击 "App"(在 "Modules" 下)。
- 在 "Properties" 选项卡中,将 "Source Compatibility" 值更改为“1.8”。
- 在 "Properties" 选项卡中,将 "Target Compatibility" 值更改为“1.8”。
这个解决方案对我有用。
请尝试更改以下值(对我有用),
- 文件 > 项目结构 > 项目 > 项目语言级别 = "8 -
Lambda、类型注释等
- 文件 > 项目结构 > 模块 > 语言级别 = "8 - Lambdas,
类型注释等
我正在尝试创建我的第一个 fxml java 项目,并且在初始化阶段我正在尝试为 table 列设置单元格值工厂,例如
@FXML
private void initialize() {
agentId.setCellValueFactory(cellData -> cellData.getValue().getIdProperty());
.....}
这是带红色下划线的,并给出了标题中提到的错误。更改项目结构中的语言级别没有任何效果。还有什么可能是错误的原因?
UPD: 我发现安装 java 和 lambdas 是必要的,它没有包含在正式版本中。我做到了,但它没有帮助。我已经下载了 here
答案如下:我不仅要更改项目结构->项目中的语言级别,还要更改项目结构->模块中的语言级别。
我不得不做一些事情来解决这个问题。
- 文件 > 项目结构 > 项目 > 项目 SDK:将其更改为 Java 1.8.XX
- 文件 > 项目结构 > 项目 > 语言级别:SDK 8(在我的例子中,SDK 默认已经是 8)
- 文件 > 项目结构 > 模块 > 来源 > SDK 8(在我的例子中,SDK 默认已经是 8)
- 文件 > 设置 > 构建、执行、部署 > 编译器 > Java 编译器 > 项目字节码版本 > 1.8
- 文件 > 设置 > 构建、执行、部署 > 编译器 > Java 编译器 > 每模块字节码版本 > 目标字节码版本 > 1.8
这应该可以解决问题。
如果您已经完成上述操作但仍未修复,并且如果您正在设置新模块,请检查您的模块源文件夹是否已添加到父模块。我发现它是在 1.5 编译的,因为这是父模块设置(因为父模块不包含 java 源)。也将其更新为 1.8 最终摆脱了警告并从父模块中删除了模块的源文件夹。 文件 > 项目结构 > 模块(模块的父级)> 来源 > 语言级别
如果您使用的是 Android Studio 版本 3.2.1,您可以使用以下步骤更改语言级别:
- 转到项目结构
- 在模块部分,点击应用。
- 在属性选项卡中,将源兼容性更改为 1.8。
- 单击文件,Android Studio 中的左上角。
- 单击项目结构。
- 点击应用程序。
- 选择属性并将源兼容性设置为1.8。
对于 "Android Studio" 3.3 版:
- 单击 "File"("Android Studio" 中的左上角)。
- 单击 "Project structure"。
- 单击 "App"(在 "Modules" 下)。
- 在 "Properties" 选项卡中,将 "Source Compatibility" 值更改为“1.8”。
- 在 "Properties" 选项卡中,将 "Target Compatibility" 值更改为“1.8”。
这个解决方案对我有用。
请尝试更改以下值(对我有用),
- 文件 > 项目结构 > 项目 > 项目语言级别 = "8 - Lambda、类型注释等
- 文件 > 项目结构 > 模块 > 语言级别 = "8 - Lambdas, 类型注释等