错误:某些 lambda 表达式中的表达式开头非法

Posted

技术标签:

【中文标题】错误:某些 lambda 表达式中的表达式开头非法【英文标题】:error: illegal start of expression in some lambda expressions 【发布时间】:2015-12-16 09:21:55 【问题描述】:

我在java中有以下函数:

private static Predicate<SomeObject> isNotCancelled() 
    return i -> !i.getStatus().equals("Cancelled");

使用以下激活器命令时:compile、run、test 或 testOnly。一切正常,没有编译错误,应用程序按我的预期运行。

但是当我做 activator testProd 或 activator stage 时会出现以下错误:

[error] /path_to_class/SomeClass.java:34: error: illegal start of expression
[error]         return i -> !i.getStatus().equals("Cancelled")
[error]                   ^

有人可以帮我理解为什么会这样吗?

提前致谢。

【问题讨论】:

您确定您使用的是 Java 8 编译器吗? 嗯,我认为并希望如此。我在 PC 上安装的唯一版本是 javac 1.8.0_66。 你是如何编译你的项目的?你在使用 IDE 吗? 我正在使用命令行“activator compile”命令。我的激活器版本是“activator-dist-1.3.6” 我已更改我的激活器启动脚本以打印 java 版本,它返回版本 1.8.0_66 【参考方案1】:

我通过升级 activator、sbt 和 play 版本解决了这个问题:

activator-dist-1.3.7(我之前的版本是1.3.6) sbt 0.13.9(我之前的版本是0.13.8) 玩2.4.4(我之前的版本是2.4.4)

【讨论】:

以上是关于错误:某些 lambda 表达式中的表达式开头非法的主要内容,如果未能解决你的问题,请参考以下文章

与私有变量相关的非法表达式开头

199,一个被正则表达式遗忘的号码段?

lambda 表达式中的错误返回类型:

java报错说方法语句是非法表达式的开始,需要:求大神指导!

字符串中的“→”导致错误“在 SQL/XML 表达式中发现非法 XML 字符 001A”(DB2)

VS Code 中的 Lambda 表达式 C++ 错误