Lambda表达式在此语言级别不受支持 IDEA

8

我正在尝试创建我的第一个FXML Java项目,在初始化阶段,我正在尝试为表格列设置单元格值工厂,例如:

      @FXML
        private void initialize() {
        agentId.setCellValueFactory(cellData -> cellData.getValue().getIdProperty());
       .....}

这段文字被标为红色下划线,并显示了与标题中提到的错误。更改项目结构中的语言级别没有任何效果。还有什么原因会导致错误发生?

更新:我发现需要安装带有lambda的java,这不包含在官方版本中。我已经安装了它,但仍然没有帮助。我在这里下载了它。


1
你是否将语言级别设置为1.8? - James_D
@James_D,它没有写明是1.8,而是8。 - Nikitin Mikhail
你尝试过使用Android N SDK和Jack编译器吗? - IgorGanapolsky
7个回答

24

我必须采取一些措施来解决这个问题。

  1. 文件 > 项目结构 > 项目 > 项目 SDK: 将其更改为 Java 1.8.XX
  2. 文件 > 项目结构 > 项目 > 语言级别: SDK 8 (在我的情况下,SDK 默认已经是 8)
  3. 文件 > 项目结构 > 模块 > 源 > SDK 8 (在我的情况下,SDK 默认已经是 8)
  4. 文件 > 设置 > 构建、执行、部署 > 编译器 > Java 编译器 > 项目字节码版本 > 1.8
  5. 文件 > 设置 > 构建、执行、部署 > 编译器 > Java 编译器 > 每个模块的字节码版本 > 目标字节码版本 > 1.8

这应该能解决问题。


编译器选项卡中没有Java编译器选项,请帮忙。 - Kitwradr

17
答案如下:我不仅需要在项目结构->项目中改变语言级别,还需要在项目结构->模块中进行更改。

1
这也解决了我的问题。但不仅仅是lambda - 所有高级语言的更改都是如此。我将我的模块设置为使用项目默认值,这会推迟到顶层。 - end-user

5

如果您正在使用Android Studio版本3.2.1,您可以按照以下步骤更改语言级别:

  1. 进入项目结构
  2. 在模块部分下,点击app。
  3. 在属性选项卡中,将源兼容性更改为1.8。

3
  1. 点击Android Studio左上角的文件(File)
  2. 选择项目结构(Project structure)
  3. 点击应用(App)
  4. 选择属性(Properties)并将源兼容性(Source Compatibility)设置为1.8

2

针对"Android Studio" 3.3版本:

  1. 点击 "File"(在"Android Studio"左上角)。
  2. 点击 "Project structure"。
  3. 点击 "App"(在"Modules"下)。
  4. 在"Properties"标签中,将"Source Compatibility"的值更改为"1.8"。
  5. 在"Properties"标签中,将"Target Compatibility"的值更改为"1.8"。

这个解决方案对我有效。


1
如果您已经尝试了上述方法但问题仍未解决,并且您正在设置一个新的模块,请检查您的模块源文件夹是否已添加到父模块中。我发现它被编译为1.5,因为这是父模块的设置(因为父模块不包含Java源代码)。将其更新为1.8最终消除了警告,并从父模块中删除了该模块的源文件夹。 文件>项目结构>模块(模块的父级)>源>语言级别

-1
请尝试更改以下值(对我有效):
  • 文件 > 项目结构 > 项目 > 项目语言级别 =“8- Lambda、类型注释等”
  • 文件 > 项目结构 > 模块 > 语言级别 =“8- Lambda、类型注释等”

项目语言级别不是在项目中的选项。它只能是Android Gradle插件版本或Gradle版本。 - JCutting8
它在模块中也不是选项。 - JCutting8
请问您能否检查一下您的IntelliJ版本?以上内容是基于无限制版2020.2的。 - Vasanthakumar Jagannathan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接