2015-04-28 10 views
5

我想创建我的第一个FXML Java项目,在初始化阶段,我想设置表columnt单元格的值工厂的支持,例如lambda表达式都不会在这个语言层面IDEA

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

这是红色下划线,并给出了标题中提到的错误。在项目结构中更改语言级别不起作用。还有什么可能是错误的原因?

UPD:我发现安装带有未包含在官方发行版中的lambda表达式的java是很必要的。我做到了,但它没有帮助。我已经下载了它here

+1

我假设你正在设置语言水平1.8? –

+0

@James_D它写的不是1.8,而是8 –

+0

你有没有试过用Jack N编译器使用Android N sdk? –

回答

9

的答案是:我不得不改变语言水平不仅在项目结构 - >项目,但在项目结构 - >模块了。

+1

这也解决了我的问题。但它不仅仅是lamdas--它是所有高级语言的变化。我将我的模块设置为使用项目默认设置,该设置默认为顶层。 –

16

我不得不做一些事情来摆脱这个问题。

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

这应该做的伎俩。

+1

太棒了,谢谢!像Intellij上的魅力一样工作! –

1

如果您已经完成了上述工作,但仍未解决问题,并且您正在设置新模块,请检查您的模块源文件夹是否未添加到父模块。我发现它被编译为1.5,因为这是父模块设置(因为父代不包含java源代码)。最后将它更新到1.8,最终摆脱了警告并从父模块中移除了模块的源文件夹。 文件>项目结构>模块(模块的母公司)>来源>语言水平